diff --git a/app/bootstrap.php b/app/bootstrap.php
index 3d474cea45432a6e42f72d2cabc2a57953260fac..e77c6d432c816c379ab226b366928d52cad3e426 100644
--- a/app/bootstrap.php
+++ b/app/bootstrap.php
@@ -14,12 +14,12 @@ error_reporting(E_ALL);
 if (!defined('PHP_VERSION_ID') || !(PHP_VERSION_ID === 70002 || PHP_VERSION_ID === 70004 || PHP_VERSION_ID >= 70006)) {
     if (PHP_SAPI == 'cli') {
         echo 'Magento supports 7.0.2, 7.0.4, and 7.0.6 or later. ' .
-            'Please read http://devdocs.magento.com/guides/v1.0/install-gde/system-requirements.html';
+            'Please read http://devdocs.magento.com/guides/v2.2/install-gde/system-requirements.html';
     } else {
         echo <<<HTML
 <div style="font:12px/1.35em arial, helvetica, sans-serif;">
     <p>Magento supports PHP 7.0.2, 7.0.4, and 7.0.6 or later. Please read
-    <a target="_blank" href="http://devdocs.magento.com/guides/v1.0/install-gde/system-requirements.html">
+    <a target="_blank" href="http://devdocs.magento.com/guides/v2.2/install-gde/system-requirements.html">
     Magento System Requirements</a>.
 </div>
 HTML;
diff --git a/app/code/Magento/Backend/Model/Menu/Item.php b/app/code/Magento/Backend/Model/Menu/Item.php
index fe6564d24e891acda4bbc64e830b0964b26fe604..42febe94d0abffd4be864c142e2678cbdc14579c 100644
--- a/app/code/Magento/Backend/Model/Menu/Item.php
+++ b/app/code/Magento/Backend/Model/Menu/Item.php
@@ -467,15 +467,15 @@ class Item
     {
         return [
             'parent_id' => $this->_parentId,
-            'module_name' => $this->_moduleName,
+            'module' => $this->_moduleName,
             'sort_index' => $this->_sortIndex,
-            'depends_on_config' => $this->_dependsOnConfig,
+            'dependsOnConfig' => $this->_dependsOnConfig,
             'id' => $this->_id,
             'resource' => $this->_resource,
             'path' => $this->_path,
             'action' => $this->_action,
-            'depends_on_module' => $this->_dependsOnModule,
-            'tooltip' => $this->_tooltip,
+            'dependsOnModule' => $this->_dependsOnModule,
+            'toolTip' => $this->_tooltip,
             'title' => $this->_title,
             'target' => $this->target,
             'sub_menu' => isset($this->_submenu) ? $this->_submenu->toArray() : null
@@ -492,15 +492,15 @@ class Item
     public function populateFromArray(array $data)
     {
         $this->_parentId = $this->_getArgument($data, 'parent_id');
-        $this->_moduleName = $this->_getArgument($data, 'module_name', 'Magento_Backend');
+        $this->_moduleName = $this->_getArgument($data, 'module', 'Magento_Backend');
         $this->_sortIndex = $this->_getArgument($data, 'sort_index');
-        $this->_dependsOnConfig = $this->_getArgument($data, 'depends_on_config');
+        $this->_dependsOnConfig = $this->_getArgument($data, 'dependsOnConfig');
         $this->_id = $this->_getArgument($data, 'id');
         $this->_resource = $this->_getArgument($data, 'resource');
         $this->_path = $this->_getArgument($data, 'path', '');
         $this->_action = $this->_getArgument($data, 'action');
-        $this->_dependsOnModule = $this->_getArgument($data, 'depends_on_module');
-        $this->_tooltip = $this->_getArgument($data, 'tooltip', '');
+        $this->_dependsOnModule = $this->_getArgument($data, 'dependsOnModule');
+        $this->_tooltip = $this->_getArgument($data, 'toolTip');
         $this->_title = $this->_getArgument($data, 'title');
         $this->target = $this->_getArgument($data, 'target');
         if (isset($data['sub_menu'])) {
diff --git a/app/code/Magento/Backend/Test/Unit/Model/Menu/ItemTest.php b/app/code/Magento/Backend/Test/Unit/Model/Menu/ItemTest.php
index 74368537c39c796f1590e0e693a11b37493ca21a..ad172cbfbd16501c6c73cdf1a677e8397003d4aa 100644
--- a/app/code/Magento/Backend/Test/Unit/Model/Menu/ItemTest.php
+++ b/app/code/Magento/Backend/Test/Unit/Model/Menu/ItemTest.php
@@ -56,9 +56,9 @@ class ItemTest extends \PHPUnit\Framework\TestCase
         'title' => 'Item Title',
         'action' => '/system/config',
         'resource' => 'Magento_Config::config',
-        'depends_on_module' => 'Magento_Backend',
-        'depends_on_config' => 'system/config/isEnabled',
-        'tooltip' => 'Item tooltip',
+        'dependsOnModule' => 'Magento_Backend',
+        'dependsOnConfig' => 'system/config/isEnabled',
+        'toolTip' => 'Item tooltip',
     ];
 
     protected function setUp()
diff --git a/app/code/Magento/Backend/Test/Unit/Model/_files/menu_item_constructor_data.php b/app/code/Magento/Backend/Test/Unit/Model/_files/menu_item_constructor_data.php
index b0c74461980a28eca2d93b84c3c8e6a31f4f9c63..82f07e264b96306de6e7e00bd6b51c16e140fa5a 100644
--- a/app/code/Magento/Backend/Test/Unit/Model/_files/menu_item_constructor_data.php
+++ b/app/code/Magento/Backend/Test/Unit/Model/_files/menu_item_constructor_data.php
@@ -12,21 +12,21 @@ return [
             'title' => 'Item Title',
             'action' => '/system/config',
             'resource' => 'Magento_Config::config',
-            'depends_on_module' => 'Magento_Backend',
-            'depends_on_config' => 'system/config/isEnabled',
-            'tooltip' => 'Item tooltip',
+            'dependsOnModule' => 'Magento_Backend',
+            'dependsOnConfig' => 'system/config/isEnabled',
+            'toolTip' => 'Item tooltip',
         ],
         [
             'parent_id' => null,
-            'module_name' => 'Magento_Backend',
+            'module' => 'Magento_Backend',
             'sort_index' => null,
-            'depends_on_config' => 'system/config/isEnabled',
+            'dependsOnConfig' => 'system/config/isEnabled',
             'id' => 'item',
             'resource' => 'Magento_Config::config',
             'path' => '',
             'action' => '/system/config',
-            'depends_on_module' => 'Magento_Backend',
-            'tooltip' => 'Item tooltip',
+            'dependsOnModule' => 'Magento_Backend',
+            'toolTip' => 'Item tooltip',
             'title' => 'Item Title',
             'sub_menu' => null,
             'target' => null
@@ -38,43 +38,43 @@ return [
             'title' => 'Item Title',
             'action' => '/system/config',
             'resource' => 'Magento_Config::config',
-            'depends_on_module' => 'Magento_Backend',
-            'depends_on_config' => 'system/config/isEnabled',
-            'tooltip' => 'Item tooltip',
+            'dependsOnModule' => 'Magento_Backend',
+            'dependsOnConfig' => 'system/config/isEnabled',
+            'toolTip' => 'Item tooltip',
         ],
         [
             'parent_id' => '1',
-            'module_name' => 'Magento_Module1',
+            'module' => 'Magento_Module1',
             'sort_index' => '50',
-            'depends_on_config' => null,
+            'dependsOnConfig' => null,
             'id' => '5',
             'resource' => null,
             'path' => null,
             'action' => null,
-            'depends_on_module' => null,
-            'tooltip' => null,
+            'dependsOnModule' => null,
+            'toolTip' => null,
             'title' => null,
             'sub_menu' => [
                 'id' => 'item',
                 'title' => 'Item Title',
                 'action' => '/system/config',
                 'resource' => 'Magento_Config::config',
-                'depends_on_module' => 'Magento_Backend',
-                'depends_on_config' => 'system/config/isEnabled',
-                'tooltip' => 'Item tooltip',
+                'dependsOnModule' => 'Magento_Backend',
+                'dependsOnConfig' => 'system/config/isEnabled',
+                'toolTip' => 'Item tooltip',
             ],
         ],
         [
             'parent_id' => '1',
-            'module_name' => 'Magento_Module1',
+            'module' => 'Magento_Module1',
             'sort_index' => '50',
-            'depends_on_config' => null,
+            'dependsOnConfig' => null,
             'id' => '5',
             'resource' => null,
             'path' => '',
             'action' => null,
-            'depends_on_module' => null,
-            'tooltip' => '',
+            'dependsOnModule' => null,
+            'toolTip' => '',
             'title' => null,
             'sub_menu' => ['submenuArray'],
             'target' => null
@@ -83,51 +83,51 @@ return [
     'data with submenu to constructor' => [
         [
             'parent_id' => '1',
-            'module_name' => 'Magento_Module1',
+            'module' => 'Magento_Module1',
             'sort_index' => '50',
-            'depends_on_config' => null,
+            'dependsOnConfig' => null,
             'id' => '5',
             'resource' => null,
             'path' => null,
             'action' => null,
-            'depends_on_module' => null,
-            'tooltip' => null,
+            'dependsOnModule' => null,
+            'toolTip' => null,
             'title' => null,
             'sub_menu' => [
                 'id' => 'item',
                 'title' => 'Item Title',
                 'action' => '/system/config',
                 'resource' => 'Magento_Config::config',
-                'depends_on_module' => 'Magento_Backend',
-                'depends_on_config' => 'system/config/isEnabled',
-                'tooltip' => 'Item tooltip',
+                'dependsOnModule' => 'Magento_Backend',
+                'dependsOnConfig' => 'system/config/isEnabled',
+                'toolTip' => 'Item tooltip',
             ],
         ],
         [
             'parent_id' => '1',
-            'module_name' => 'Magento_Module1',
+            'module' => 'Magento_Module1',
             'sort_index' => '50',
             'sub_menu' => [
                 'id' => 'item',
                 'title' => 'Item Title',
                 'action' => '/system/config',
                 'resource' => 'Magento_Config::config',
-                'depends_on_module' => 'Magento_Backend',
-                'depends_on_config' => 'system/config/isEnabled',
-                'tooltip' => 'Item tooltip',
+                'dependsOnModule' => 'Magento_Backend',
+                'dependsOnConfig' => 'system/config/isEnabled',
+                'toolTip' => 'Item tooltip',
             ],
         ],
         [
             'parent_id' => '1',
-            'module_name' => 'Magento_Module1',
+            'module' => 'Magento_Module1',
             'sort_index' => '50',
-            'depends_on_config' => null,
+            'dependsOnConfig' => null,
             'id' => null,
             'resource' => null,
             'path' => '',
             'action' => null,
-            'depends_on_module' => null,
-            'tooltip' => '',
+            'dependsOnModule' => null,
+            'toolTip' => '',
             'title' => null,
             'sub_menu' => ['submenuArray'],
             'target' => null
diff --git a/app/code/Magento/Backend/Test/Unit/Model/_files/menu_item_data.php b/app/code/Magento/Backend/Test/Unit/Model/_files/menu_item_data.php
index 30a43b0158ae35601679808431d94668a2f847ba..b1a310d7d440b8d565d3999b9a441c0c8d6ad26a 100644
--- a/app/code/Magento/Backend/Test/Unit/Model/_files/menu_item_data.php
+++ b/app/code/Magento/Backend/Test/Unit/Model/_files/menu_item_data.php
@@ -11,22 +11,22 @@ return [
             'title' => 'Item Title',
             'action' => '/system/config',
             'resource' => 'Magento_Config::config',
-            'depends_on_module' => 'Magento_Backend',
-            'depends_on_config' => 'system/config/isEnabled',
-            'tooltip' => 'Item tooltip',
+            'dependsOnModule' => 'Magento_Backend',
+            'dependsOnConfig' => 'system/config/isEnabled',
+            'toolTip' => 'Item tooltip',
             'sub_menu' => null,
         ],
         [
             'parent_id' => null,
-            'module_name' => 'Magento_Backend',
+            'module' => 'Magento_Backend',
             'sort_index' => null,
-            'depends_on_config' => 'system/config/isEnabled',
+            'dependsOnConfig' => 'system/config/isEnabled',
             'id' => 'item',
             'resource' => 'Magento_Config::config',
             'path' => '',
             'action' => '/system/config',
-            'depends_on_module' => 'Magento_Backend',
-            'tooltip' => 'Item tooltip',
+            'dependsOnModule' => 'Magento_Backend',
+            'toolTip' => 'Item tooltip',
             'title' => 'Item Title',
             'sub_menu' => null,
             'target' => null
@@ -35,46 +35,46 @@ return [
     'with submenu' => [
         [
             'parent_id' => '1',
-            'module_name' => 'Magento_Module1',
+            'module' => 'Magento_Module1',
             'sort_index' => '50',
-            'depends_on_config' => null,
+            'dependsOnConfig' => null,
             'id' => '5',
             'resource' => null,
             'path' => null,
             'action' => null,
-            'depends_on_module' => null,
-            'tooltip' => null,
+            'dependsOnModule' => null,
+            'toolTip' => null,
             'title' => null,
             'sub_menu' => [
                 'id' => 'item',
                 'title' => 'Item Title',
                 'action' => '/system/config',
                 'resource' => 'Magento_Config::config',
-                'depends_on_module' => 'Magento_Backend',
-                'depends_on_config' => 'system/config/isEnabled',
-                'tooltip' => 'Item tooltip',
+                'dependsOnModule' => 'Magento_Backend',
+                'dependsOnConfig' => 'system/config/isEnabled',
+                'toolTip' => 'Item tooltip',
             ],
         ],
         [
             'parent_id' => '1',
-            'module_name' => 'Magento_Module1',
+            'module' => 'Magento_Module1',
             'sort_index' => '50',
-            'depends_on_config' => null,
+            'dependsOnConfig' => null,
             'id' => '5',
             'resource' => null,
             'path' => null,
             'action' => null,
-            'depends_on_module' => null,
-            'tooltip' => '',
+            'dependsOnModule' => null,
+            'toolTip' => '',
             'title' => null,
             'sub_menu' => [
                 'id' => 'item',
                 'title' => 'Item Title',
                 'action' => '/system/config',
                 'resource' => 'Magento_Config::config',
-                'depends_on_module' => 'Magento_Backend',
-                'depends_on_config' => 'system/config/isEnabled',
-                'tooltip' => 'Item tooltip',
+                'dependsOnModule' => 'Magento_Backend',
+                'dependsOnConfig' => 'system/config/isEnabled',
+                'toolTip' => 'Item tooltip',
             ],
             'target' => null
         ]
@@ -82,38 +82,38 @@ return [
     'small set of data' => [
         [
             'parent_id' => '1',
-            'module_name' => 'Magento_Module1',
+            'module' => 'Magento_Module1',
             'sort_index' => '50',
             'sub_menu' => [
                 'id' => 'item',
                 'title' => 'Item Title',
                 'action' => '/system/config',
                 'resource' => 'Magento_Config::config',
-                'depends_on_module' => 'Magento_Backend',
-                'depends_on_config' => 'system/config/isEnabled',
-                'tooltip' => 'Item tooltip',
+                'dependsOnModule' => 'Magento_Backend',
+                'dependsOnConfig' => 'system/config/isEnabled',
+                'toolTip' => 'Item tooltip',
             ],
         ],
         [
             'parent_id' => '1',
-            'module_name' => 'Magento_Module1',
+            'module' => 'Magento_Module1',
             'sort_index' => '50',
-            'depends_on_config' => null,
+            'dependsOnConfig' => null,
             'id' => null,
             'resource' => null,
             'path' => '',
             'action' => null,
-            'depends_on_module' => null,
-            'tooltip' => '',
+            'dependsOnModule' => null,
+            'toolTip' => '',
             'title' => null,
             'sub_menu' => [
                 'id' => 'item',
                 'title' => 'Item Title',
                 'action' => '/system/config',
                 'resource' => 'Magento_Config::config',
-                'depends_on_module' => 'Magento_Backend',
-                'depends_on_config' => 'system/config/isEnabled',
-                'tooltip' => 'Item tooltip',
+                'dependsOnModule' => 'Magento_Backend',
+                'dependsOnConfig' => 'system/config/isEnabled',
+                'toolTip' => 'Item tooltip',
             ],
             'target' => null
         ]
diff --git a/app/code/Magento/Braintree/Gateway/Validator/ErrorCodeValidator.php b/app/code/Magento/Braintree/Gateway/Validator/ErrorCodeValidator.php
new file mode 100644
index 0000000000000000000000000000000000000000..d38b04e46b0dbde0f937bc913b5384448fe4db49
--- /dev/null
+++ b/app/code/Magento/Braintree/Gateway/Validator/ErrorCodeValidator.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Braintree\Gateway\Validator;
+
+use Braintree\Error\ErrorCollection;
+use Braintree\Error\Validation;
+use Braintree\Result\Error;
+use Braintree\Result\Successful;
+
+/**
+ * Processes errors codes from Braintree response.
+ */
+class ErrorCodeValidator
+{
+    /**
+     * Invokes validation.
+     *
+     * @param Successful|Error $response
+     * @return array
+     */
+    public function __invoke($response)
+    {
+        if (!$response instanceof Error) {
+            return [true, [__('Transaction is successful.')]];
+        }
+
+        return [false, $this->getErrorCodes($response->errors)];
+    }
+
+    /**
+     * Retrieves list of error codes from Braintree response.
+     *
+     * @param ErrorCollection $collection
+     * @return array
+     */
+    private function getErrorCodes(ErrorCollection $collection)
+    {
+        $result = [];
+        /** @var Validation $error */
+        foreach ($collection->deepAll() as $error) {
+            $result[] = $error->code;
+        }
+
+        return $result;
+    }
+}
diff --git a/app/code/Magento/Braintree/Gateway/Validator/GeneralResponseValidator.php b/app/code/Magento/Braintree/Gateway/Validator/GeneralResponseValidator.php
index 8028bace0cf242d373e329f0a90fbdf9a1fb2bc9..7bafa35e13185125b9bb10f32a8e9252b34fd2bb 100644
--- a/app/code/Magento/Braintree/Gateway/Validator/GeneralResponseValidator.php
+++ b/app/code/Magento/Braintree/Gateway/Validator/GeneralResponseValidator.php
@@ -18,16 +18,26 @@ class GeneralResponseValidator extends AbstractValidator
      */
     protected $subjectReader;
 
+    /**
+     * @var ErrorCodeValidator
+     */
+    private $errorCodeValidator;
+
     /**
      * Constructor
      *
      * @param ResultInterfaceFactory $resultFactory
      * @param SubjectReader $subjectReader
+     * @param ErrorCodeValidator $errorCodeValidator
      */
-    public function __construct(ResultInterfaceFactory $resultFactory, SubjectReader $subjectReader)
-    {
+    public function __construct(
+        ResultInterfaceFactory $resultFactory,
+        SubjectReader $subjectReader,
+        ErrorCodeValidator $errorCodeValidator
+    ) {
         parent::__construct($resultFactory);
         $this->subjectReader = $subjectReader;
+        $this->errorCodeValidator = $errorCodeValidator;
     }
 
     /**
@@ -62,9 +72,10 @@ class GeneralResponseValidator extends AbstractValidator
             function ($response) {
                 return [
                     property_exists($response, 'success') && $response->success === true,
-                    [__('Braintree error response.')]
+                    [$response->message ?? __('Braintree error response.')]
                 ];
-            }
+            },
+            $this->errorCodeValidator
         ];
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/GeneralResponseValidatorTest.php b/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/GeneralResponseValidatorTest.php
index c8a46da504fef158a4a3d56137dc7d6debb3cc9f..de8423618ab8deb3c90f96d8f5753fd17af1a4ff 100644
--- a/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/GeneralResponseValidatorTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/GeneralResponseValidatorTest.php
@@ -5,12 +5,14 @@
  */
 namespace Magento\Braintree\Test\Unit\Gateway\Validator;
 
-use Braintree\Transaction;
+use Braintree\Result\Error;
+use Magento\Braintree\Gateway\SubjectReader;
+use Magento\Braintree\Gateway\Validator\ErrorCodeValidator;
+use Magento\Braintree\Gateway\Validator\GeneralResponseValidator;
 use Magento\Framework\Phrase;
-use Magento\Payment\Gateway\Validator\ResultInterface;
+use Magento\Payment\Gateway\Validator\Result;
 use Magento\Payment\Gateway\Validator\ResultInterfaceFactory;
-use Magento\Braintree\Gateway\Validator\GeneralResponseValidator;
-use Magento\Braintree\Gateway\SubjectReader;
+use PHPUnit_Framework_MockObject_MockObject as MockObject;
 
 class GeneralResponseValidatorTest extends \PHPUnit\Framework\TestCase
 {
@@ -20,14 +22,9 @@ class GeneralResponseValidatorTest extends \PHPUnit\Framework\TestCase
     private $responseValidator;
 
     /**
-     * @var ResultInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
-     */
-    private $resultInterfaceFactoryMock;
-
-    /**
-     * @var SubjectReader|\PHPUnit_Framework_MockObject_MockObject
+     * @var ResultInterfaceFactory|MockObject
      */
-    private $subjectReaderMock;
+    private $resultInterfaceFactory;
 
     /**
      * Set up
@@ -36,23 +33,20 @@ class GeneralResponseValidatorTest extends \PHPUnit\Framework\TestCase
      */
     protected function setUp()
     {
-        $this->resultInterfaceFactoryMock = $this->getMockBuilder(
-            \Magento\Payment\Gateway\Validator\ResultInterfaceFactory::class
-        )->disableOriginalConstructor()
-            ->setMethods(['create'])
-            ->getMock();
-        $this->subjectReaderMock = $this->getMockBuilder(SubjectReader::class)
+        $this->resultInterfaceFactory = $this->getMockBuilder(ResultInterfaceFactory::class)
             ->disableOriginalConstructor()
+            ->setMethods(['create'])
             ->getMock();
 
         $this->responseValidator = new GeneralResponseValidator(
-            $this->resultInterfaceFactoryMock,
-            $this->subjectReaderMock
+            $this->resultInterfaceFactory,
+            new SubjectReader(),
+            new ErrorCodeValidator()
         );
     }
 
     /**
-     * Run test for validate method
+     * Checks a case when the validator processes successful and failed transactions.
      *
      * @param array $validationSubject
      * @param bool $isValid
@@ -61,45 +55,52 @@ class GeneralResponseValidatorTest extends \PHPUnit\Framework\TestCase
      *
      * @dataProvider dataProviderTestValidate
      */
-    public function testValidate(array $validationSubject, $isValid, $messages)
+    public function testValidate(array $validationSubject, bool $isValid, $messages)
     {
-        /** @var ResultInterface|\PHPUnit_Framework_MockObject_MockObject $resultMock */
-        $resultMock = $this->createMock(ResultInterface::class);
+        $result = new Result($isValid, $messages);
 
-        $this->subjectReaderMock->expects(self::once())
-            ->method('readResponseObject')
-            ->with($validationSubject)
-            ->willReturn($validationSubject['response']['object']);
-
-        $this->resultInterfaceFactoryMock->expects(self::once())
-            ->method('create')
+        $this->resultInterfaceFactory->method('create')
             ->with([
                 'isValid' => $isValid,
                 'failsDescription' => $messages
             ])
-            ->willReturn($resultMock);
+            ->willReturn($result);
 
-        $actualMock = $this->responseValidator->validate($validationSubject);
+        $actual = $this->responseValidator->validate($validationSubject);
 
-        self::assertEquals($resultMock, $actualMock);
+        self::assertEquals($result, $actual);
     }
 
     /**
+     * Gets variations for different type of response.
+     *
      * @return array
      */
     public function dataProviderTestValidate()
     {
-        $successTrue = new \stdClass();
-        $successTrue->success = true;
+        $successTransaction = new \stdClass();
+        $successTransaction->success = true;
+
+        $failureTransaction = new \stdClass();
+        $failureTransaction->success = false;
+        $failureTransaction->message = 'Transaction was failed.';
 
-        $successFalse = new \stdClass();
-        $successFalse->success = false;
+        $errors = [
+            'errors' => [
+                [
+                    'code' => 81804,
+                    'attribute' => 'base',
+                    'message' => 'Cannot process transaction.'
+                ]
+            ]
+        ];
+        $errorTransaction = new Error(['errors' => $errors]);
 
         return [
             [
                 'validationSubject' => [
                     'response' => [
-                        'object' => $successTrue
+                        'object' => $successTransaction
                     ],
                 ],
                 'isValid' => true,
@@ -108,12 +109,24 @@ class GeneralResponseValidatorTest extends \PHPUnit\Framework\TestCase
             [
                 'validationSubject' => [
                     'response' => [
-                        'object' => $successFalse
+                        'object' => $failureTransaction
+                    ]
+                ],
+                'isValid' => false,
+                [
+                    __('Transaction was failed.')
+                ]
+            ],
+            [
+                'validationSubject' => [
+                    'response' => [
+                        'object' => $errorTransaction
                     ]
                 ],
                 'isValid' => false,
                 [
-                    __('Braintree error response.')
+                    __('Braintree error response.'),
+                    81804
                 ]
             ]
         ];
diff --git a/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/PaymentNonceResponseValidatorTest.php b/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/PaymentNonceResponseValidatorTest.php
index 03363b5463d78dd8f4774da5d8c54e96a68e65d5..a59bbb6f0d387b9d3cd53047db715a9c3cfbf3c0 100644
--- a/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/PaymentNonceResponseValidatorTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/PaymentNonceResponseValidatorTest.php
@@ -5,15 +5,13 @@
  */
 namespace Magento\Braintree\Test\Unit\Gateway\Validator;
 
-use Braintree\Transaction;
+use Magento\Braintree\Gateway\SubjectReader;
+use Magento\Braintree\Gateway\Validator\ErrorCodeValidator;
 use Magento\Braintree\Gateway\Validator\PaymentNonceResponseValidator;
-use Magento\Payment\Gateway\Validator\ResultInterface;
+use Magento\Payment\Gateway\Validator\Result;
 use Magento\Payment\Gateway\Validator\ResultInterfaceFactory;
-use Magento\Braintree\Gateway\SubjectReader;
+use PHPUnit_Framework_MockObject_MockObject as MockObject;
 
-/**
- * Class PaymentNonceResponseValidatorTest
- */
 class PaymentNonceResponseValidatorTest extends \PHPUnit\Framework\TestCase
 {
     /**
@@ -22,35 +20,24 @@ class PaymentNonceResponseValidatorTest extends \PHPUnit\Framework\TestCase
     private $validator;
 
     /**
-     * @var ResultInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
+     * @var ResultInterfaceFactory|MockObject
      */
     private $resultInterfaceFactory;
 
-    /**
-     * @var SubjectReader|\PHPUnit_Framework_MockObject_MockObject
-     */
-    private $subjectReader;
-
     protected function setUp()
     {
         $this->resultInterfaceFactory = $this->getMockBuilder(ResultInterfaceFactory::class)
             ->disableOriginalConstructor()
             ->setMethods(['create'])
             ->getMock();
-        $this->subjectReader = $this->getMockBuilder(SubjectReader::class)
-            ->disableOriginalConstructor()
-            ->setMethods(['readResponseObject'])
-            ->getMock();
 
         $this->validator = new PaymentNonceResponseValidator(
             $this->resultInterfaceFactory,
-            $this->subjectReader
+            new SubjectReader(),
+            new ErrorCodeValidator()
         );
     }
 
-    /**
-     * @covers \Magento\Braintree\Gateway\Validator\PaymentNonceResponseValidator::validate
-     */
     public function testFailedValidate()
     {
         $obj = new \stdClass();
@@ -61,23 +48,12 @@ class PaymentNonceResponseValidatorTest extends \PHPUnit\Framework\TestCase
             ]
         ];
 
-        $this->subjectReader->expects(static::once())
-            ->method('readResponseObject')
-            ->willReturn($obj);
-
-        $result = $this->createMock(ResultInterface::class);
-        $this->resultInterfaceFactory->expects(self::once())
-            ->method('create')
-            ->with([
-                'isValid' => false,
-                'failsDescription' => [
-                    __('Payment method nonce can\'t be retrieved.')
-                ]
-            ])
+        $result = new Result(false, [__('Payment method nonce can\'t be retrieved.')]);
+        $this->resultInterfaceFactory->method('create')
             ->willReturn($result);
 
         $actual = $this->validator->validate($subject);
-        static::assertEquals($result, $actual);
+        self::assertEquals($result, $actual);
     }
 
     public function testValidateSuccess()
@@ -93,20 +69,11 @@ class PaymentNonceResponseValidatorTest extends \PHPUnit\Framework\TestCase
             ]
         ];
 
-        $this->subjectReader->expects(static::once())
-            ->method('readResponseObject')
-            ->willReturn($obj);
-
-        $result = $this->createMock(ResultInterface::class);
-        $this->resultInterfaceFactory->expects(self::once())
-            ->method('create')
-            ->with([
-                'isValid' => true,
-                'failsDescription' => []
-            ])
+        $result = new Result(true);
+        $this->resultInterfaceFactory->method('create')
             ->willReturn($result);
 
         $actual = $this->validator->validate($subject);
-        static::assertEquals($result, $actual);
+        self::assertEquals($result, $actual);
     }
 }
diff --git a/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/ResponseValidatorTest.php b/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/ResponseValidatorTest.php
index 4bd446079f9a70243944215ad450fede859cb59e..ba4d6cae062ee9f6eca0a111840ec6dbac2aa693 100644
--- a/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/ResponseValidatorTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Gateway/Validator/ResponseValidatorTest.php
@@ -5,15 +5,16 @@
  */
 namespace Magento\Braintree\Test\Unit\Gateway\Validator;
 
+use Braintree\Result\Successful;
 use Braintree\Transaction;
+use Magento\Braintree\Gateway\SubjectReader;
+use Magento\Braintree\Gateway\Validator\ErrorCodeValidator;
+use Magento\Braintree\Gateway\Validator\ResponseValidator;
 use Magento\Framework\Phrase;
+use Magento\Payment\Gateway\Validator\Result;
 use Magento\Payment\Gateway\Validator\ResultInterface;
 use Magento\Payment\Gateway\Validator\ResultInterfaceFactory;
-use Magento\Braintree\Gateway\Validator\ResponseValidator;
-use Magento\Braintree\Gateway\SubjectReader;
 use PHPUnit_Framework_MockObject_MockObject as MockObject;
-use Braintree\Result\Error;
-use Braintree\Result\Successful;
 
 /**
  * Class ResponseValidatorTest
@@ -30,11 +31,6 @@ class ResponseValidatorTest extends \PHPUnit\Framework\TestCase
      */
     private $resultInterfaceFactory;
 
-    /**
-     * @var SubjectReader|MockObject
-     */
-    private $subjectReader;
-
     /**
      * Set up
      *
@@ -46,13 +42,11 @@ class ResponseValidatorTest extends \PHPUnit\Framework\TestCase
             ->disableOriginalConstructor()
             ->setMethods(['create'])
             ->getMock();
-        $this->subjectReader = $this->getMockBuilder(SubjectReader::class)
-            ->disableOriginalConstructor()
-            ->getMock();
 
         $this->responseValidator = new ResponseValidator(
             $this->resultInterfaceFactory,
-            $this->subjectReader
+            new SubjectReader(),
+            new ErrorCodeValidator()
         );
     }
 
@@ -65,11 +59,6 @@ class ResponseValidatorTest extends \PHPUnit\Framework\TestCase
             'response' => null
         ];
 
-        $this->subjectReader->expects(self::once())
-            ->method('readResponseObject')
-            ->with($validationSubject)
-            ->willThrowException(new \InvalidArgumentException());
-
         $this->responseValidator->validate($validationSubject);
     }
 
@@ -82,11 +71,6 @@ class ResponseValidatorTest extends \PHPUnit\Framework\TestCase
             'response' => ['object' => null]
         ];
 
-        $this->subjectReader->expects(self::once())
-            ->method('readResponseObject')
-            ->with($validationSubject)
-            ->willThrowException(new \InvalidArgumentException());
-
         $this->responseValidator->validate($validationSubject);
     }
 
@@ -103,19 +87,9 @@ class ResponseValidatorTest extends \PHPUnit\Framework\TestCase
     public function testValidate(array $validationSubject, $isValid, $messages)
     {
         /** @var ResultInterface|MockObject $result */
-        $result = $this->createMock(ResultInterface::class);
-
-        $this->subjectReader->expects(self::once())
-            ->method('readResponseObject')
-            ->with($validationSubject)
-            ->willReturn($validationSubject['response']['object']);
-
-        $this->resultInterfaceFactory->expects(self::once())
-            ->method('create')
-            ->with([
-                'isValid' => $isValid,
-                'failsDescription' => $messages
-            ])
+        $result = new Result($isValid, $messages);
+
+        $this->resultInterfaceFactory->method('create')
             ->willReturn($result);
 
         $actual = $this->responseValidator->validate($validationSubject);
@@ -141,8 +115,6 @@ class ResponseValidatorTest extends \PHPUnit\Framework\TestCase
         $transactionDeclined->transaction = new \stdClass();
         $transactionDeclined->transaction->status = Transaction::SETTLEMENT_DECLINED;
 
-        $errorResult = new Error(['errors' => []]);
-
         return [
             [
                 'validationSubject' => [
@@ -175,18 +147,6 @@ class ResponseValidatorTest extends \PHPUnit\Framework\TestCase
                 [
                     __('Wrong transaction status')
                 ]
-            ],
-            [
-                'validationSubject' => [
-                    'response' => [
-                        'object' => $errorResult,
-                    ]
-                ],
-                'isValid' => false,
-                [
-                    __('Braintree error response.'),
-                    __('Wrong transaction status')
-                ]
             ]
         ];
     }
diff --git a/app/code/Magento/Braintree/etc/adminhtml/braintree_error_mapping.xml b/app/code/Magento/Braintree/etc/adminhtml/braintree_error_mapping.xml
new file mode 100644
index 0000000000000000000000000000000000000000..611f9372518fc7207f55b3922c00785f013cb735
--- /dev/null
+++ b/app/code/Magento/Braintree/etc/adminhtml/braintree_error_mapping.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Payment:etc/error_mapping.xsd">
+    <message_list>
+        <message code="81509" translate="true">Credit card type is not accepted by this merchant account.</message>
+        <message code="91504" translate="true">Transaction can only be voided if status is authorized, submitted_for_settlement, or - for PayPal - settlement_pending.</message>
+        <message code="91505" translate="true">Credit transactions cannot be refunded.</message>
+        <message code="91506" translate="true">Cannot refund a transaction unless it is settled.</message>
+        <message code="91507" translate="true">Cannot submit for settlement unless status is authorized.</message>
+        <message code="91511" translate="true">Customer does not have any credit cards.</message>
+        <message code="91512" translate="true">Transaction has already been completely refunded.</message>
+        <message code="91517" translate="true">Payment instrument type is not accepted by this merchant account.</message>
+        <message code="91519" translate="true">Processor authorization code cannot be set unless for a voice authorization.</message>
+        <message code="91521" translate="true">Refund amount is too large.</message>
+        <message code="91522" translate="true">Settlement amount is too large.</message>
+        <message code="91530" translate="true">Cannot provide a billing address unless also providing a credit card.</message>
+        <message code="91538" translate="true">Cannot refund a transaction with a suspended merchant account.</message>
+        <message code="91547" translate="true">Merchant account does not support refunds.</message>
+        <message code="91574" translate="true">Cannot refund a transaction transaction in settling status on this merchant account. Try again after the transaction has settled.</message>
+        <message code="91576" translate="true">PayPal is not enabled for your merchant account.</message>
+        <message code="915102" translate="true">Partial settlements are not supported by this processor.</message>
+        <message code="915103" translate="true">Cannot submit for partial settlement.</message>
+        <message code="915148" translate="true">Transaction can not be voided if status of a PayPal partial settlement child transaction is settlement_pending.</message>
+        <message code="915149" translate="true">Too many concurrent attempts to refund this transaction. Try again later.</message>
+        <message code="915151" translate="true">Too many concurrent attempts to void this transaction. Try again later.</message>
+    </message_list>
+</mapping>
diff --git a/app/code/Magento/Braintree/etc/adminhtml/di.xml b/app/code/Magento/Braintree/etc/adminhtml/di.xml
index 90fc927ed4f8026e6ee86fe22ec523a6eb3f69bf..bb5763469cad3a30beb0167bdb54fbad2677e4ba 100644
--- a/app/code/Magento/Braintree/etc/adminhtml/di.xml
+++ b/app/code/Magento/Braintree/etc/adminhtml/di.xml
@@ -45,6 +45,19 @@
         </arguments>
     </virtualType>
 
+    <!-- Braintree commands -->
+    <type name="BraintreeVoidCommand">
+        <arguments>
+            <argument name="errorMessageMapper" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualErrorMessageMapper</argument>
+        </arguments>
+    </type>
+    <type name="BraintreeRefundCommand">
+        <arguments>
+            <argument name="errorMessageMapper" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualErrorMessageMapper</argument>
+        </arguments>
+    </type>
+    <!-- END Braintree commands -->
+
     <type name="Magento\Vault\Model\Ui\Adminhtml\TokensConfigProvider">
         <arguments>
             <argument name="tokenUiComponentProviders" xsi:type="array">
diff --git a/app/code/Magento/Braintree/etc/braintree_error_mapping.xml b/app/code/Magento/Braintree/etc/braintree_error_mapping.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81da0a252e567896b0d9182ae9e5bbb9f52affb1
--- /dev/null
+++ b/app/code/Magento/Braintree/etc/braintree_error_mapping.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Payment:etc/error_mapping.xsd">
+    <message_list>
+        <message code="81703" translate="true">Credit card type is not accepted by this merchant account.</message>
+        <message code="81706" translate="true">CVV is required.</message>
+        <message code="81707" translate="true">CVV must be 4 digits for American Express and 3 digits for other card types.</message>
+        <message code="81709" translate="true">Expiration date is required.</message>
+        <message code="81710" translate="true">Expiration date is invalid.</message>
+        <message code="81711" translate="true">Expiration year is invalid. It must be between 1975 and 2201.</message>
+        <message code="81712" translate="true">Expiration month is invalid.</message>
+        <message code="81713" translate="true">Expiration year is invalid.</message>
+        <message code="81714" translate="true">Credit card number is required.</message>
+        <message code="81715" translate="true">Credit card number is invalid.</message>
+        <message code="81716" translate="true">Credit card number must be 12-19 digits.</message>
+        <message code="81723" translate="true">Cardholder name is too long.</message>
+        <message code="81736" translate="true">CVV verification failed.</message>
+        <message code="81737" translate="true">Postal code verification failed.</message>
+        <message code="81750" translate="true">Credit card number is prohibited.</message>
+        <message code="81801" translate="true">Addresses must have at least one field filled in.</message>
+        <message code="81802" translate="true">Company is too long.</message>
+        <message code="81804" translate="true">Extended address is too long.</message>
+        <message code="81805" translate="true">First name is too long.</message>
+        <message code="81806" translate="true">Last name is too long.</message>
+        <message code="81807" translate="true">Locality is too long.</message>
+        <message code="81808" translate="true">Postal code is required.</message>
+        <message code="81809" translate="true">Postal code may contain no more than 9 letter or number characters.</message>
+        <message code="81810" translate="true">Region is too long.</message>
+        <message code="81811" translate="true">Street address is required.</message>
+        <message code="81812" translate="true">Street address is too long.</message>
+        <message code="81813" translate="true">Postal code can only contain letters, numbers, spaces, and hyphens.</message>
+        <message code="81827" translate="true">US state codes must be two characters to meet PayPal Seller Protection requirements.</message>
+        <message code="82901" translate="true">Incomplete PayPal account information.</message>
+        <message code="82903" translate="true">Invalid PayPal account information.</message>
+        <message code="82904" translate="true">PayPal Accounts are not accepted by this merchant account.</message>
+        <message code="91726" translate="true">Credit card type is not accepted by this merchant account.</message>
+        <message code="91734" translate="true">Credit card type is not accepted by this merchant account.</message>
+        <message code="91744" translate="true">Billing address format is invalid.</message>
+        <message code="91803" translate="true">Country name is not an accepted country.</message>
+        <message code="91814" translate="true">Country code is not accepted. Please contact the store administrator.</message>
+        <message code="91815" translate="true">Provided country information is inconsistent.</message>
+        <message code="91816" translate="true">Country code is not accepted. Please contact the store administrator.</message>
+        <message code="91817" translate="true">Country code is not accepted. Please contact the store administrator.</message>
+        <message code="91818" translate="true">Customer has already reached the maximum of 50 addresses.</message>
+        <message code="91819" translate="true">Address is invalid. Please contact the store administrator.</message>
+        <message code="91820" translate="true">Address is invalid. Please contact the store administrator.</message>
+        <message code="91821" translate="true">Address is invalid. Please contact the store administrator.</message>
+        <message code="91822" translate="true">Address is invalid. Please contact the store administrator.</message>
+        <message code="91823" translate="true">Address is invalid. Please contact the store administrator.</message>
+        <message code="91824" translate="true">Address is invalid. Please contact the store administrator.</message>
+        <message code="91825" translate="true">Address is invalid. Please contact the store administrator.</message>
+        <message code="91826" translate="true">Address is invalid. Please contact the store administrator.</message>
+        <message code="91828" translate="true">Address is invalid. Please contact the store administrator.</message>
+        <message code="92910" translate="true">Error communicating with PayPal.</message>
+        <message code="92911" translate="true">PayPal authentication expired.</message>
+        <message code="92916" translate="true">Error executing PayPal order.</message>
+        <message code="92917" translate="true">Error executing PayPal billing agreement.</message>
+    </message_list>
+</mapping>
diff --git a/app/code/Magento/Braintree/etc/di.xml b/app/code/Magento/Braintree/etc/di.xml
index 86c291181575437012da6db8ef0b2601eddd66bd..a834503c5882ae61f17d3164a7758d0767dcd641 100644
--- a/app/code/Magento/Braintree/etc/di.xml
+++ b/app/code/Magento/Braintree/etc/di.xml
@@ -193,6 +193,23 @@
         </arguments>
     </type>
 
+    <virtualType name="Magento\Braintree\Gateway\ErrorMapper\VirtualConfigReader" type="Magento\Payment\Gateway\ErrorMapper\VirtualConfigReader">
+        <arguments>
+            <argument name="fileName" xsi:type="string">braintree_error_mapping.xml</argument>
+        </arguments>
+    </virtualType>
+    <virtualType name="Magento\Braintree\Gateway\ErrorMapper\VirtualMappingData" type="Magento\Payment\Gateway\ErrorMapper\MappingData">
+        <arguments>
+            <argument name="reader" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualConfigReader</argument>
+            <argument name="cacheId" xsi:type="string">braintree_error_mapper</argument>
+        </arguments>
+    </virtualType>
+    <virtualType name="Magento\Braintree\Gateway\ErrorMapper\VirtualErrorMessageMapper" type="Magento\Payment\Gateway\ErrorMapper\ErrorMessageMapper">
+        <arguments>
+            <argument name="messageMapping" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualMappingData</argument>
+        </arguments>
+    </virtualType>
+
     <!-- Braintree commands  -->
     <virtualType name="BraintreeAuthorizeCommand" type="Magento\Payment\Gateway\Command\GatewayCommand">
         <arguments>
@@ -201,6 +218,7 @@
             <argument name="client" xsi:type="object">Magento\Braintree\Gateway\Http\Client\TransactionSale</argument>
             <argument name="handler" xsi:type="object">BraintreeAuthorizationHandler</argument>
             <argument name="validator" xsi:type="object">Magento\Braintree\Gateway\Validator\ResponseValidator</argument>
+            <argument name="errorMessageMapper" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualErrorMessageMapper</argument>
         </arguments>
     </virtualType>
     <virtualType name="BraintreeAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
@@ -240,6 +258,7 @@
             <argument name="client" xsi:type="object">Magento\Braintree\Gateway\Http\Client\TransactionSubmitForSettlement</argument>
             <argument name="handler" xsi:type="object">Magento\Braintree\Gateway\Response\TransactionIdHandler</argument>
             <argument name="validator" xsi:type="object">Magento\Braintree\Gateway\Validator\ResponseValidator</argument>
+            <argument name="errorMessageMapper" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualErrorMessageMapper</argument>
         </arguments>
     </virtualType>
     <virtualType name="BraintreeCaptureRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
@@ -258,6 +277,7 @@
             <argument name="client" xsi:type="object">Magento\Braintree\Gateway\Http\Client\TransactionSale</argument>
             <argument name="handler" xsi:type="object">BraintreeVaultResponseHandler</argument>
             <argument name="validator" xsi:type="object">Magento\Braintree\Gateway\Validator\ResponseValidator</argument>
+            <argument name="errorMessageMapper" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualErrorMessageMapper</argument>
         </arguments>
     </virtualType>
     <virtualType name="BraintreeVaultAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
@@ -296,6 +316,7 @@
             <argument name="client" xsi:type="object">Magento\Braintree\Gateway\Http\Client\TransactionSale</argument>
             <argument name="handler" xsi:type="object">Magento\Braintree\Gateway\Response\TransactionIdHandler</argument>
             <argument name="validator" xsi:type="object">Magento\Braintree\Gateway\Validator\ResponseValidator</argument>
+            <argument name="errorMessageMapper" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualErrorMessageMapper</argument>
         </arguments>
     </virtualType>
     <virtualType name="BraintreeVaultCaptureRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
diff --git a/app/code/Magento/Braintree/i18n/en_US.csv b/app/code/Magento/Braintree/i18n/en_US.csv
index 116f459a1c1c83460e29701b54fd32d9313f8233..194ad14d497513785cfbc2bbb96e81cc669dfdd9 100644
--- a/app/code/Magento/Braintree/i18n/en_US.csv
+++ b/app/code/Magento/Braintree/i18n/en_US.csv
@@ -129,3 +129,65 @@ Amount,Amount
 "Refund Ids","Refund Ids"
 "Settlement Batch ID","Settlement Batch ID"
 Currency,Currency
+"Addresses must have at least one field filled in.","Addresses must have at least one field filled in."
+"Company is too long.","Company is too long."
+"Extended address is too long.","Extended address is too long."
+"First name is too long.","First name is too long."
+"Last name is too long.","Last name is too long."
+"Locality is too long.","Locality is too long."
+"Postal code can only contain letters, numbers, spaces, and hyphens.","Postal code can only contain letters, numbers, spaces, and hyphens."
+"Postal code is required.","Postal code is required."
+"Postal code may contain no more than 9 letter or number characters.","Postal code may contain no more than 9 letter or number characters."
+"Region is too long.","Region is too long."
+"Street address is required.","Street address is required."
+"Street address is too long.","Street address is too long."
+"US state codes must be two characters to meet PayPal Seller Protection requirements.","US state codes must be two characters to meet PayPal Seller Protection requirements."
+"Country name is not an accepted country.","Country name is not an accepted country."
+"Provided country information is inconsistent.","Provided country information is inconsistent."
+"Country code is not accepted. Please contact the store administrator.","Country code is not accepted. Please contact the store administrator."
+"Customer has already reached the maximum of 50 addresses.","Customer has already reached the maximum of 50 addresses."
+"Address is invalid. Please contact the store administrator.","Address is invalid. Please contact the store administrator."
+"Address is invalid.","Address is invalid."
+"Billing address format is invalid.","Billing address format is invalid."
+"Cardholder name is too long.","Cardholder name is too long."
+"Credit card type is not accepted by this merchant account.","Credit card type is not accepted by this merchant account."
+"CVV is required.","CVV is required."
+"CVV must be 4 digits for American Express and 3 digits for other card types.","CVV must be 4 digits for American Express and 3 digits for other card types."
+"Expiration date is required.","Expiration date is required."
+"Expiration date is invalid.","Expiration date is invalid."
+"Expiration year is invalid. It must be between 1975 and 2201.","Expiration year is invalid. It must be between 1975 and 2201."
+"Expiration month is invalid.","Expiration month is invalid."
+"Expiration year is invalid.","Expiration year is invalid."
+"Credit card number is required.","Credit card number is required."
+"Credit card number is invalid.","Credit card number is invalid."
+"Credit card number must be 12-19 digits.","Credit card number must be 12-19 digits."
+"CVV verification failed.","CVV verification failed."
+"Postal code verification failed.","Postal code verification failed."
+"Credit card number is prohibited.","Credit card number is prohibited."
+"Incomplete PayPal account information.","Incomplete PayPal account information."
+"Invalid PayPal account information.","Invalid PayPal account information."
+"PayPal Accounts are not accepted by this merchant account.","PayPal Accounts are not accepted by this merchant account."
+"Error communicating with PayPal.","Error communicating with PayPal."
+"PayPal authentication expired.","PayPal authentication expired."
+"Error executing PayPal order.","Error executing PayPal order."
+"Error executing PayPal billing agreement.","Error executing PayPal billing agreement."
+"Cannot provide a billing address unless also providing a credit card.","Cannot provide a billing address unless also providing a credit card."
+"Transaction can only be voided if status is authorized, submitted_for_settlement, or - for PayPal - settlement_pending.","Transaction can only be voided if status is authorized, submitted_for_settlement, or - for PayPal - settlement_pending."
+"Credit transactions cannot be refunded.","Credit transactions cannot be refunded."
+"Cannot refund a transaction unless it is settled.","Cannot refund a transaction unless it is settled."
+"Cannot submit for settlement unless status is authorized.","Cannot submit for settlement unless status is authorized."
+"Customer does not have any credit cards.","Customer does not have any credit cards."
+"Transaction has already been completely refunded.","Transaction has already been completely refunded."
+"Payment instrument type is not accepted by this merchant account.","Payment instrument type is not accepted by this merchant account."
+"Processor authorization code cannot be set unless for a voice authorization.","Processor authorization code cannot be set unless for a voice authorization."
+"Refund amount is too large.","Refund amount is too large."
+"Settlement amount is too large.","Settlement amount is too large."
+"Cannot refund a transaction with a suspended merchant account.","Cannot refund a transaction with a suspended merchant account."
+"Merchant account does not support refunds.","Merchant account does not support refunds."
+"PayPal is not enabled for your merchant account.","PayPal is not enabled for your merchant account."
+"Cannot refund a transaction transaction in settling status on this merchant account. Try again after the transaction has settled.","Cannot refund a transaction transaction in settling status on this merchant account. Try again after the transaction has settled."
+"Cannot submit for partial settlement.","Cannot submit for partial settlement."
+"Partial settlements are not supported by this processor.","Partial settlements are not supported by this processor."
+"Transaction can not be voided if status of a PayPal partial settlement child transaction is settlement_pending.","Transaction can not be voided if status of a PayPal partial settlement child transaction is settlement_pending."
+"Too many concurrent attempts to refund this transaction. Try again later.","Too many concurrent attempts to refund this transaction. Try again later."
+"Too many concurrent attempts to void this transaction. Try again later.","Too many concurrent attempts to void this transaction. Try again later."
\ No newline at end of file
diff --git a/app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer/cc-form.js b/app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer/cc-form.js
index 73a7b10d5d30f976b19750ccbe1efeb9c90a821b..d078cacb96c2d2ebbad294796fbec86990c5c6be 100644
--- a/app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer/cc-form.js
+++ b/app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer/cc-form.js
@@ -79,6 +79,7 @@ define(
                      */
                     onError: function (response) {
                         braintree.showError($t('Payment ' + this.getTitle() + ' can\'t be initialized'));
+                        this.isPlaceOrderActionAllowed(true);
                         throw response.message;
                     },
 
diff --git a/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php b/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php
index 6688648a3c4fd6fabbc010e8440be6c6813a12b3..7f21d9e69c6e0eeee63ce6a2a44a3aa9d66d65bc 100644
--- a/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php
+++ b/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php
@@ -127,7 +127,7 @@ class Bundle
         }
         $options = [];
         foreach ($bundleOptionsData as $key => $optionData) {
-            if ((bool)$optionData['delete']) {
+            if (!empty($optionData['delete'])) {
                 continue;
             }
 
diff --git a/app/code/Magento/Catalog/Block/Product/ImageBuilder.php b/app/code/Magento/Catalog/Block/Product/ImageBuilder.php
index d47218db371420b420081d94596af421782a0991..04d30270cbb62b915b02f0a77102d8f7b87bdeb4 100644
--- a/app/code/Magento/Catalog/Block/Product/ImageBuilder.php
+++ b/app/code/Magento/Catalog/Block/Product/ImageBuilder.php
@@ -6,6 +6,7 @@
 namespace Magento\Catalog\Block\Product;
 
 use Magento\Catalog\Helper\ImageFactory as HelperFactory;
+use Magento\Catalog\Model\Product\Image\NotLoadInfoImageException;
 
 class ImageBuilder
 {
@@ -129,7 +130,11 @@ class ImageBuilder
             ? 'Magento_Catalog::product/image.phtml'
             : 'Magento_Catalog::product/image_with_borders.phtml';
 
-        $imagesize = $helper->getResizedImageInfo();
+        try {
+            $imagesize = $helper->getResizedImageInfo();
+        } catch (NotLoadInfoImageException $exception) {
+            $imagesize = [$helper->getWidth(), $helper->getHeight()];
+        }
 
         $data = [
             'data' => [
@@ -140,8 +145,8 @@ class ImageBuilder
                 'label' => $helper->getLabel(),
                 'ratio' =>  $this->getRatio($helper),
                 'custom_attributes' => $this->getCustomAttributes(),
-                'resized_image_width' => !empty($imagesize[0]) ? $imagesize[0] : $helper->getWidth(),
-                'resized_image_height' => !empty($imagesize[1]) ? $imagesize[1] : $helper->getHeight(),
+                'resized_image_width' => $imagesize[0],
+                'resized_image_height' => $imagesize[1],
             ],
         ];
 
diff --git a/app/code/Magento/Catalog/Model/Product/Image.php b/app/code/Magento/Catalog/Model/Product/Image.php
index abd28ed3bf1eced2b04fc0a7b4ade7875e73c5a1..91f589f9b5bd725b4a1042016497c8ea487f1f2f 100644
--- a/app/code/Magento/Catalog/Model/Product/Image.php
+++ b/app/code/Magento/Catalog/Model/Product/Image.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\Catalog\Model\Product;
 
+use Magento\Catalog\Model\Product\Image\NotLoadInfoImageException;
 use Magento\Framework\App\Filesystem\DirectoryList;
 use Magento\Framework\App\ObjectManager;
 use Magento\Framework\Image as MagentoImage;
@@ -877,17 +878,26 @@ class Image extends \Magento\Framework\Model\AbstractModel
 
     /**
      * Return resized product image information
-     *
      * @return array
+     * @throws NotLoadInfoImageException
      */
     public function getResizedImageInfo()
     {
-        if ($this->isBaseFilePlaceholder() == true) {
-            $image = $this->imageAsset->getSourceFile();
-        } else {
-            $image = $this->imageAsset->getPath();
+        try {
+            if ($this->isBaseFilePlaceholder() == true) {
+                $image = $this->imageAsset->getSourceFile();
+            } else {
+                $image = $this->imageAsset->getPath();
+            }
+
+            $imageProperties = getimagesize($image);
+
+            return $imageProperties;
+        } finally {
+            if (empty($imageProperties)) {
+                throw new NotLoadInfoImageException(__('Can\'t get information about the picture: %1', $image));
+            }
         }
-        return getimagesize($image);
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Model/Product/Image/NotLoadInfoImageException.php b/app/code/Magento/Catalog/Model/Product/Image/NotLoadInfoImageException.php
new file mode 100644
index 0000000000000000000000000000000000000000..0feec11c62a5931543c6f3f21cb2464add57527b
--- /dev/null
+++ b/app/code/Magento/Catalog/Model/Product/Image/NotLoadInfoImageException.php
@@ -0,0 +1,10 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Catalog\Model\Product\Image;
+
+class NotLoadInfoImageException extends \Exception
+{
+}
diff --git a/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/AbstractTest.php b/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/AbstractTest.php
index 64416301faa065bd4b4e1b003b855b70c5bbe0b3..96336d2b0706abd590d87cb82ff61a1a85c01e2c 100644
--- a/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/AbstractTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/AbstractTest.php
@@ -44,11 +44,13 @@ class AbstractTest extends \PHPUnit\Framework\TestCase
 
         $code = 'test_attr';
         $set = 10;
+        $storeId = 100;
 
         $object = $this->createPartialMock(\Magento\Catalog\Model\Product::class, ['__wakeup']);
 
         $object->setData('test_attr', 'test_attr');
         $object->setData('attribute_set_id', $set);
+        $object->setData('store_id', $storeId);
 
         $entityType = new \Magento\Framework\DataObject();
         $entityType->setEntityTypeCode('test');
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Attributes.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Attributes.php
index aec6549f400fc5742eb0a64612572039f4a1a878..683a96133ad3005beeea1812744da6496bd84ae2 100644
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Attributes.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Attributes.php
@@ -182,6 +182,11 @@ class Attributes extends AbstractModifier
                                                 . '.create_new_attribute_modal',
                                             'actionName' => 'toggleModal',
                                         ],
+                                        [
+                                            'targetName' => 'product_form.product_form.add_attribute_modal'
+                                                . '.create_new_attribute_modal.product_attribute_add_form',
+                                            'actionName' => 'destroyInserted'
+                                        ],
                                         [
                                             'targetName'
                                             => 'product_form.product_form.add_attribute_modal'
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/Listing/Collector/Image.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/Listing/Collector/Image.php
index 2fc9ef76aa00d30f416f786c9e45187c8e89774a..216bc16968fcbf05679a2bc777e825f2111cecd4 100644
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/Listing/Collector/Image.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/Listing/Collector/Image.php
@@ -11,6 +11,7 @@ use Magento\Catalog\Api\Data\ProductRender\ImageInterface;
 use Magento\Catalog\Api\Data\ProductRender\ImageInterfaceFactory;
 use Magento\Catalog\Api\Data\ProductRenderInterface;
 use Magento\Catalog\Helper\ImageFactory;
+use Magento\Catalog\Model\Product\Image\NotLoadInfoImageException;
 use Magento\Catalog\Ui\DataProvider\Product\ProductRenderCollectorInterface;
 use Magento\Framework\App\State;
 use Magento\Framework\View\DesignInterface;
@@ -102,7 +103,12 @@ class Image implements ProductRenderCollectorInterface
                     [$this, "emulateImageCreating"],
                     [$product, $imageCode, (int) $productRender->getStoreId(), $image]
                 );
-            $resizedInfo = $helper->getResizedImageInfo();
+
+            try {
+                $resizedInfo = $helper->getResizedImageInfo();
+            } catch (NotLoadInfoImageException $exception) {
+                $resizedInfo = [$helper->getWidth(), $helper->getHeight()];
+            }
 
             $image->setCode($imageCode);
             $image->setHeight($helper->getHeight());
diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/options.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/options.phtml
index 6ff0e193a774f4b1878a289518a971e698ea3347..f812a27f87ad936c7199b56ed67535204c97d537 100644
--- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/options.phtml
+++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/options.phtml
@@ -57,7 +57,7 @@ $stores = $block->getStoresSortedBySortOrder();
         <input type="hidden" id="option-count-check" value="" />
     </div>
     <script id="row-template" type="text/x-magento-template">
-         <tr>
+        <tr <% if (data.rowClasses) { %>class="<%- data.rowClasses %>"<% } %>>
             <td class="col-draggable">
                 <?php if (!$block->getReadOnly() && !$block->canManageOptionDefaultOnly()): ?>
                     <div data-role="draggable-handle" class="draggable-handle"
diff --git a/app/code/Magento/Catalog/view/adminhtml/ui_component/product_attribute_add_form.xml b/app/code/Magento/Catalog/view/adminhtml/ui_component/product_attribute_add_form.xml
index 772bc1e6ec5d721b45a48b2ab1cfade000af6b09..f795fcabe701c0298e8362db57a0af372c0535e9 100644
--- a/app/code/Magento/Catalog/view/adminhtml/ui_component/product_attribute_add_form.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/ui_component/product_attribute_add_form.xml
@@ -147,7 +147,6 @@
                         <item name="isTemplate" xsi:type="boolean">true</item>
                         <item name="is_collection" xsi:type="boolean">true</item>
                         <item name="componentType" xsi:type="string">container</item>
-                        <item name="positionProvider" xsi:type="string">attribute_options.position</item>
                     </item>
                 </argument>
                 <field name="is_default" component="Magento_Catalog/js/form/element/checkbox" sortOrder="0" formElement="checkbox">
@@ -184,12 +183,8 @@
                         </item>
                     </argument>
                     <settings>
-                        <additionalClasses>
-                            <class name="_hidden">true</class>
-                        </additionalClasses>
                         <dataType>text</dataType>
                         <visible>false</visible>
-                        <dataScope>position</dataScope>
                     </settings>
                 </field>
             </container>
diff --git a/app/code/Magento/Catalog/view/adminhtml/web/js/form/element/input.js b/app/code/Magento/Catalog/view/adminhtml/web/js/form/element/input.js
index 51ffeaea0fc0ccda677a9648ee3b501a2562b207..2f6703cc92eac405dfb0763b47f1e5f08bd1d60a 100644
--- a/app/code/Magento/Catalog/view/adminhtml/web/js/form/element/input.js
+++ b/app/code/Magento/Catalog/view/adminhtml/web/js/form/element/input.js
@@ -54,9 +54,16 @@ define([
             if (!_.isEmpty(this.suffixName) || _.isNumber(this.suffixName)) {
                 suffixName = '.' + this.suffixName;
             }
-            this.dataScope = 'data.' + this.prefixName + '.' + this.elementName + suffixName;
 
-            this.links.value = this.provider + ':' + this.dataScope;
+            this.exportDataLink = 'data.' + this.prefixName + '.' + this.elementName + suffixName;
+            this.exports.value = this.provider + ':' + this.exportDataLink;
+        },
+
+        /** @inheritdoc */
+        destroy: function () {
+            this._super();
+
+            this.source.remove(this.exportDataLink);
         },
 
         /**
diff --git a/app/code/Magento/Catalog/view/adminhtml/web/js/options.js b/app/code/Magento/Catalog/view/adminhtml/web/js/options.js
index 5239eb207efca66a7e3566fa26d62b03fbffac6f..787516a9abf29fa499d7131a11bac552343d160e 100644
--- a/app/code/Magento/Catalog/view/adminhtml/web/js/options.js
+++ b/app/code/Magento/Catalog/view/adminhtml/web/js/options.js
@@ -24,6 +24,7 @@ define([
                 totalItems: 0,
                 rendered: 0,
                 template: mageTemplate('#row-template'),
+                newOptionClass: 'new-option',
                 isReadOnly: config.isReadOnly,
                 add: function (data, render) {
                     var isNewOption = false,
@@ -32,7 +33,8 @@ define([
                     if (typeof data.id == 'undefined') {
                         data = {
                             'id': 'option_' + this.itemCount,
-                            'sort_order': this.itemCount + 1
+                            'sort_order': this.itemCount + 1,
+                            'rowClasses': this.newOptionClass
                         };
                         isNewOption = true;
                     }
@@ -84,6 +86,10 @@ define([
                         this.totalItems--;
                         this.updateItemsCountField();
                     }
+
+                    if (element.hasClassName(this.newOptionClass)) {
+                        element.remove();
+                    }
                 },
                 updateItemsCountField: function () {
                     $('option-count-check').value = this.totalItems > 0 ? '1' : '';
diff --git a/app/code/Magento/Catalog/view/adminhtml/web/template/form/element/action-delete.html b/app/code/Magento/Catalog/view/adminhtml/web/template/form/element/action-delete.html
index d4cfb02611416ae32b7e142e523058288245c9d5..9a52dcefa304281e71099b9d29f51a7a335752f9 100644
--- a/app/code/Magento/Catalog/view/adminhtml/web/template/form/element/action-delete.html
+++ b/app/code/Magento/Catalog/view/adminhtml/web/template/form/element/action-delete.html
@@ -7,7 +7,7 @@
 <button class="action-delete"
         attr="{'data-action': 'remove_row'}"
         data-bind="
-            click: function(){ $data.processingDeleteRecord($parents); },
+            click: function(){ $parent.processingDeleteRecord($record().index, $record.recordId); },
             attr: {
                 title: $parent.deleteButtonLabel
             }
diff --git a/app/code/Magento/Catalog/view/base/web/template/product/link.html b/app/code/Magento/Catalog/view/base/web/template/product/link.html
index 98255e1b8a9e2a88aaad78ff9081818f8cb34161..2c70300f7aec3151e8476050338f07054e62db05 100644
--- a/app/code/Magento/Catalog/view/base/web/template/product/link.html
+++ b/app/code/Magento/Catalog/view/base/web/template/product/link.html
@@ -4,6 +4,7 @@
  * See COPYING.txt for license details.
  */
 -->
-<a class="product-item-link"
+<a if="isAllowed()"
+   class="product-item-link"
    attr="href: $row().url"
    text="label"/>
diff --git a/app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js b/app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js
index 7686de1d45c5dad276775c7ae624db0b6cac8365..eb54d8af001b3b338080cfa0d71f4478535bd330 100644
--- a/app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js
+++ b/app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js
@@ -97,7 +97,7 @@ define([
                 success: function (res) {
                     var eventData, parameters;
 
-                    $(document).trigger('ajax:addToCart', form.data().productSku);
+                    $(document).trigger('ajax:addToCart', form.data().productSku, form, res);
 
                     if (self.isLoaderEnabled()) {
                         $('body').trigger(self.options.processStop);
diff --git a/app/code/Magento/Checkout/Model/Cart.php b/app/code/Magento/Checkout/Model/Cart.php
index be5692a8948657b86c5ffdccc1781fb087238a74..c0ba9616754bbba4cfa2175d02ee32c96eeec0ca 100644
--- a/app/code/Magento/Checkout/Model/Cart.php
+++ b/app/code/Magento/Checkout/Model/Cart.php
@@ -13,9 +13,10 @@ use Magento\Framework\Exception\NoSuchEntityException;
 
 /**
  * Shopping cart model
+ *
  * @api
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated 100.1.0
+ * @deprecated 100.1.0 Use \Magento\Quote\Model\Quote instead
  */
 class Cart extends DataObject implements CartInterface
 {
diff --git a/app/code/Magento/Checkout/Model/Cart/CartInterface.php b/app/code/Magento/Checkout/Model/Cart/CartInterface.php
index 2f4b679381740ce06a188d0107aa8335fde92cbd..890e6a5012ea55dc24f7ba1d32180ad9e6e32100 100644
--- a/app/code/Magento/Checkout/Model/Cart/CartInterface.php
+++ b/app/code/Magento/Checkout/Model/Cart/CartInterface.php
@@ -12,7 +12,7 @@ use Magento\Quote\Model\Quote;
  *
  * @api
  * @author      Magento Core Team <core@magentocommerce.com>
- * @deprecated 100.1.0
+ * @deprecated 100.1.0 Use \Magento\Quote\Model\Quote instead
  */
 interface CartInterface
 {
diff --git a/app/code/Magento/Cms/Model/Block.php b/app/code/Magento/Cms/Model/Block.php
index fc369971054d7281b2bccf72d48cf477d8b2090c..3795409a95d2b49f2ae0efc64f30abf050f14062 100644
--- a/app/code/Magento/Cms/Model/Block.php
+++ b/app/code/Magento/Cms/Model/Block.php
@@ -6,7 +6,6 @@
 namespace Magento\Cms\Model;
 
 use Magento\Cms\Api\Data\BlockInterface;
-use Magento\Cms\Model\ResourceModel\Block as ResourceCmsBlock;
 use Magento\Framework\DataObject\IdentityInterface;
 use Magento\Framework\Model\AbstractModel;
 
@@ -58,6 +57,11 @@ class Block extends AbstractModel implements BlockInterface, IdentityInterface
     public function beforeSave()
     {
         $needle = 'block_id="' . $this->getId() . '"';
+
+        if ($this->hasDataChanges()) {
+            $this->setUpdateTime(null);
+        }
+
         if (false == strstr($this->getContent(), $needle)) {
             return parent::beforeSave();
         }
diff --git a/app/code/Magento/Cms/Model/Page.php b/app/code/Magento/Cms/Model/Page.php
index 591f8d93fcdc6cee0a2e9f5bbc82fe871701ae18..d950f484cd1d99c27d3d1d2f796c094e96906672 100644
--- a/app/code/Magento/Cms/Model/Page.php
+++ b/app/code/Magento/Cms/Model/Page.php
@@ -6,12 +6,11 @@
 namespace Magento\Cms\Model;
 
 use Magento\Cms\Api\Data\PageInterface;
-use Magento\Cms\Model\ResourceModel\Page as ResourceCmsPage;
+use Magento\Cms\Helper\Page as PageHelper;
 use Magento\Framework\App\Config\ScopeConfigInterface;
 use Magento\Framework\DataObject\IdentityInterface;
 use Magento\Framework\Exception\LocalizedException;
 use Magento\Framework\Model\AbstractModel;
-use Magento\Cms\Helper\Page as PageHelper;
 
 /**
  * Cms Page Model
@@ -547,6 +546,10 @@ class Page extends AbstractModel implements PageInterface, IdentityInterface
         $originalIdentifier = $this->getOrigData('identifier');
         $currentIdentifier = $this->getIdentifier();
 
+        if ($this->hasDataChanges()) {
+            $this->setUpdateTime(null);
+        }
+
         if (!$this->getId() || $originalIdentifier === $currentIdentifier) {
             return parent::beforeSave();
         }
diff --git a/app/code/Magento/Cms/Model/ResourceModel/Block.php b/app/code/Magento/Cms/Model/ResourceModel/Block.php
index d5bae7359fe356892b2ff5a6288538c8dee6a683..9aab54b02bc14fcae402b5e30570e1b2c28b5699 100644
--- a/app/code/Magento/Cms/Model/ResourceModel/Block.php
+++ b/app/code/Magento/Cms/Model/ResourceModel/Block.php
@@ -7,10 +7,10 @@ namespace Magento\Cms\Model\ResourceModel;
 
 use Magento\Cms\Api\Data\BlockInterface;
 use Magento\Framework\DB\Select;
+use Magento\Framework\EntityManager\EntityManager;
+use Magento\Framework\EntityManager\MetadataPool;
 use Magento\Framework\Exception\LocalizedException;
 use Magento\Framework\Model\AbstractModel;
-use Magento\Framework\EntityManager\MetadataPool;
-use Magento\Framework\EntityManager\EntityManager;
 use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
 use Magento\Framework\Model\ResourceModel\Db\Context;
 use Magento\Store\Model\Store;
diff --git a/app/code/Magento/Cms/Model/ResourceModel/Page.php b/app/code/Magento/Cms/Model/ResourceModel/Page.php
index 8e26c8b67fa4b58cace3e3bbfb62f6d95796bef4..b836cf199632d34e345c732cfd06f645da566e3e 100644
--- a/app/code/Magento/Cms/Model/ResourceModel/Page.php
+++ b/app/code/Magento/Cms/Model/ResourceModel/Page.php
@@ -6,18 +6,18 @@
 
 namespace Magento\Cms\Model\ResourceModel;
 
+use Magento\Cms\Api\Data\PageInterface;
 use Magento\Cms\Model\Page as CmsPage;
 use Magento\Framework\DB\Select;
+use Magento\Framework\EntityManager\EntityManager;
+use Magento\Framework\EntityManager\MetadataPool;
 use Magento\Framework\Exception\LocalizedException;
 use Magento\Framework\Model\AbstractModel;
-use Magento\Framework\EntityManager\MetadataPool;
 use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
 use Magento\Framework\Model\ResourceModel\Db\Context;
 use Magento\Framework\Stdlib\DateTime;
 use Magento\Store\Model\Store;
 use Magento\Store\Model\StoreManagerInterface;
-use Magento\Framework\EntityManager\EntityManager;
-use Magento\Cms\Api\Data\PageInterface;
 
 /**
  * Cms page mysql resource
diff --git a/app/code/Magento/Config/App/Config/Source/RuntimeConfigSource.php b/app/code/Magento/Config/App/Config/Source/RuntimeConfigSource.php
index b33c944c734774a703816e1ebc6f0ce61fdf3235..7f2f771a8d0a6373bed9dfc7847532ee9a6f5c2f 100644
--- a/app/code/Magento/Config/App/Config/Source/RuntimeConfigSource.php
+++ b/app/code/Magento/Config/App/Config/Source/RuntimeConfigSource.php
@@ -3,6 +3,7 @@
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
+
 namespace Magento\Config\App\Config\Source;
 
 use Magento\Framework\App\Config\ConfigSourceInterface;
@@ -88,12 +89,12 @@ class RuntimeConfigSource implements ConfigSourceInterface
             }
         }
 
-        foreach ($config as $scope => &$item) {
+        foreach ($config as $scope => $item) {
             if ($scope === ScopeConfigInterface::SCOPE_TYPE_DEFAULT) {
-                $item = $this->converter->convert($item);
+                $config[$scope] = $this->converter->convert($item);
             } else {
-                foreach ($item as &$scopeItems) {
-                    $scopeItems = $this->converter->convert($scopeItems);
+                foreach ($item as $scopeCode => $scopeItems) {
+                    $config[$scope][$scopeCode] = $this->converter->convert($scopeItems);
                 }
             }
         }
diff --git a/app/code/Magento/Config/Model/Config/Source/Nooptreq.php b/app/code/Magento/Config/Model/Config/Source/Nooptreq.php
index 03fe5ca2abcccfe62721f747e3f7d3d4f314599f..1c9eb801dfec78962b71b9f9358ad6a462087dab 100644
--- a/app/code/Magento/Config/Model/Config/Source/Nooptreq.php
+++ b/app/code/Magento/Config/Model/Config/Source/Nooptreq.php
@@ -11,15 +11,19 @@ namespace Magento\Config\Model\Config\Source;
  */
 class Nooptreq implements \Magento\Framework\Option\ArrayInterface
 {
+    const VALUE_NO = '';
+    const VALUE_OPTIONAL = 'opt';
+    const VALUE_REQUIRED = 'req';
+
     /**
      * @return array
      */
     public function toOptionArray()
     {
         return [
-            ['value' => '', 'label' => __('No')],
-            ['value' => 'opt', 'label' => __('Optional')],
-            ['value' => 'req', 'label' => __('Required')]
+            ['value' => self::VALUE_NO, 'label' => __('No')],
+            ['value' => self::VALUE_OPTIONAL, 'label' => __('Optional')],
+            ['value' => self::VALUE_REQUIRED, 'label' => __('Required')]
         ];
     }
 }
diff --git a/app/code/Magento/Config/Model/Config/Structure/Reader.php b/app/code/Magento/Config/Model/Config/Structure/Reader.php
index 5916649588bcb271c25ba13d368e62e22602b345..c83c2e1ae13207d29ecea5d51daf46ee99ed82d8 100644
--- a/app/code/Magento/Config/Model/Config/Structure/Reader.php
+++ b/app/code/Magento/Config/Model/Config/Structure/Reader.php
@@ -124,6 +124,7 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem
      * Processing nodes of the document before merging
      *
      * @param string $content
+     * @throws \Magento\Framework\Config\Dom\ValidationException
      * @return string
      */
     protected function processingDocument($content)
@@ -131,7 +132,12 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem
         $object = new DataObject();
         $document = new \DOMDocument();
 
-        $document->loadXML($content);
+        try {
+            $document->loadXML($content);
+        } catch (\Exception $e) {
+            throw new \Magento\Framework\Config\Dom\ValidationException($e->getMessage());
+        }
+
         $this->compiler->compile($document->documentElement, $object, $object);
 
         return $document->saveXML();
diff --git a/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Indexer/Price/Configurable.php b/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Indexer/Price/Configurable.php
index a30ec81528dd38691e65bafd417aa59ae32ab3d7..40f390d5269749266c57901e991c80aaacaf295c 100644
--- a/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Indexer/Price/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Indexer/Price/Configurable.php
@@ -58,7 +58,7 @@ class Configurable extends \Magento\Catalog\Model\ResourceModel\Product\Indexer\
         if ($this->hasEntity() || !empty($entityIds)) {
             $this->prepareFinalPriceDataForType($entityIds, $this->getTypeId());
             $this->_applyCustomOption();
-            $this->_applyConfigurableOption();
+            $this->_applyConfigurableOption($entityIds);
             $this->_movePriceDataToIndexTable($entityIds);
         }
         return $this;
@@ -110,10 +110,11 @@ class Configurable extends \Magento\Catalog\Model\ResourceModel\Product\Indexer\
      * Calculate minimal and maximal prices for configurable product options
      * and apply it to final price
      *
+     * @param null|int|array $entityIds
      * @return \Magento\ConfigurableProduct\Model\ResourceModel\Product\Indexer\Price\Configurable
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    protected function _applyConfigurableOption()
+    protected function _applyConfigurableOption($entityIds = null)
     {
         $metadata = $this->getMetadataPool()->getMetadata(ProductInterface::class);
         $connection = $this->getConnection();
@@ -133,12 +134,12 @@ class Configurable extends \Magento\Catalog\Model\ResourceModel\Product\Indexer\
             ['le' => $this->getTable('catalog_product_entity')],
             'le.' . $linkField . ' = l.parent_id',
             ['parent_id' => 'entity_id']
-        )->join(
-            ['i' => $this->_getDefaultFinalPriceTable()],
-            'le.entity_id = i.entity_id',
-            []
         );
 
+        if ($entityIds !== null) {
+            $subSelect->where('le.entity_id IN (?)', $entityIds);
+        }
+
         $select = $connection->select();
         $select
             ->from(['sub' => new \Zend_Db_Expr('(' . (string)$subSelect . ')')], '')
@@ -178,6 +179,7 @@ class Configurable extends \Magento\Catalog\Model\ResourceModel\Product\Indexer\
             ' AND i.website_id = io.website_id',
             []
         );
+        // adds price of custom option, that was applied in DefaultPrice::_applyCustomOption
         $select->columns(
             [
                 'min_price' => new \Zend_Db_Expr('i.min_price - i.orig_price + io.min_price'),
diff --git a/app/code/Magento/ConfigurableProduct/Ui/DataProvider/Product/Form/Modifier/ConfigurablePanel.php b/app/code/Magento/ConfigurableProduct/Ui/DataProvider/Product/Form/Modifier/ConfigurablePanel.php
index 0e03dfe3cde51e27d00e58a057971a0d5de04a51..9fd225e8acaab0ad561e8d2d80817082f68d0d58 100644
--- a/app/code/Magento/ConfigurableProduct/Ui/DataProvider/Product/Form/Modifier/ConfigurablePanel.php
+++ b/app/code/Magento/ConfigurableProduct/Ui/DataProvider/Product/Form/Modifier/ConfigurablePanel.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\ConfigurableProduct\Ui\DataProvider\Product\Form\Modifier;
 
+use Magento\Catalog\Model\Product\Attribute\Backend\Sku;
 use Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\AbstractModifier;
 use Magento\Ui\Component\Container;
 use Magento\Ui\Component\Form;
@@ -466,7 +467,17 @@ class ConfigurablePanel extends AbstractModifier
                         [],
                         ['dataScope' => 'product_link']
                     ),
-                    'sku_container' => $this->getColumn('sku', __('SKU')),
+                    'sku_container' => $this->getColumn(
+                        'sku',
+                        __('SKU'),
+                        [
+                            'validation' =>
+                                [
+                                    'required-entry' => true,
+                                    'max_text_length' => Sku::SKU_MAX_LENGTH,
+                                ]
+                        ]
+                    ),
                     'price_container' => $this->getColumn(
                         'price',
                         __('Price'),
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/web/js/variations/variations.js b/app/code/Magento/ConfigurableProduct/view/adminhtml/web/js/variations/variations.js
index 24fc24363562b94fcae0cb8684edcf2e6a09f353..be290e49a43c372bf8a2dc2a4d0a53127f9cd2f6 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/web/js/variations/variations.js
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/web/js/variations/variations.js
@@ -357,12 +357,12 @@ define([
             var element;
 
             _.each(this.disabledAttributes, function (attribute) {
-                registry.get('index = ' + attribute).disabled(false);
+                registry.get('code = ' + attribute, 'index = ' + attribute).disabled(false);
             });
             this.disabledAttributes = [];
 
             _.each(attributes, function (attribute) {
-                element = registry.get('index = ' + attribute.code);
+                element = registry.get('code = ' + attribute.code, 'index = ' + attribute.code);
 
                 if (!_.isUndefined(element)) {
                     element.disabled(true);
diff --git a/app/code/Magento/Customer/Block/Widget/Name.php b/app/code/Magento/Customer/Block/Widget/Name.php
index ecd09319cd85ec47fd3ef0f2ac81ee683fe9491a..35f3bbefb8f00ee9a3d2cb2b7b6e3fb82bbe12ee 100644
--- a/app/code/Magento/Customer/Block/Widget/Name.php
+++ b/app/code/Magento/Customer/Block/Widget/Name.php
@@ -106,8 +106,11 @@ class Name extends AbstractWidget
         $prefixOptions = $this->options->getNamePrefixOptions();
 
         if ($this->getObject() && !empty($prefixOptions)) {
-            $oldPrefix = $this->escapeHtml(trim($this->getObject()->getPrefix()));
-            $prefixOptions[$oldPrefix] = $oldPrefix;
+            $prefixOption = $this->getObject()->getPrefix();
+            $oldPrefix = $this->escapeHtml(trim($prefixOption));
+            if ($prefixOption !== null && !isset($prefixOptions[$oldPrefix]) && !isset($prefixOptions[$prefixOption])) {
+                $prefixOptions[$oldPrefix] = $oldPrefix;
+            }
         }
         return $prefixOptions;
     }
@@ -161,8 +164,11 @@ class Name extends AbstractWidget
     {
         $suffixOptions = $this->options->getNameSuffixOptions();
         if ($this->getObject() && !empty($suffixOptions)) {
-            $oldSuffix = $this->escapeHtml(trim($this->getObject()->getSuffix()));
-            $suffixOptions[$oldSuffix] = $oldSuffix;
+            $suffixOption = $this->getObject()->getSuffix();
+            $oldSuffix = $this->escapeHtml(trim($suffixOption));
+            if ($suffixOption !== null && !isset($suffixOptions[$oldSuffix]) && !isset($suffixOptions[$suffixOption])) {
+                $suffixOptions[$oldSuffix] = $oldSuffix;
+            }
         }
         return $suffixOptions;
     }
diff --git a/app/code/Magento/Customer/Controller/Account/Confirmation.php b/app/code/Magento/Customer/Controller/Account/Confirmation.php
index e7d23cac8d62a6b0dfd8e777fe22ccec8a1980f1..a3e2db0207630d7ecdea0e3d78eef99e70ed1ebb 100644
--- a/app/code/Magento/Customer/Controller/Account/Confirmation.php
+++ b/app/code/Magento/Customer/Controller/Account/Confirmation.php
@@ -6,8 +6,10 @@
  */
 namespace Magento\Customer\Controller\Account;
 
+use Magento\Customer\Model\Url;
 use Magento\Framework\App\Action\Context;
 use Magento\Customer\Model\Session;
+use Magento\Framework\App\ObjectManager;
 use Magento\Framework\View\Result\PageFactory;
 use Magento\Store\Model\StoreManagerInterface;
 use Magento\Customer\Api\AccountManagementInterface;
@@ -35,24 +37,32 @@ class Confirmation extends \Magento\Customer\Controller\AbstractAccount
      */
     protected $resultPageFactory;
 
+    /**
+     * @var Url
+     */
+    private $customerUrl;
+
     /**
      * @param Context $context
      * @param Session $customerSession
      * @param PageFactory $resultPageFactory
      * @param StoreManagerInterface $storeManager
      * @param AccountManagementInterface $customerAccountManagement
+     * @param Url $customerUrl
      */
     public function __construct(
         Context $context,
         Session $customerSession,
         PageFactory $resultPageFactory,
         StoreManagerInterface $storeManager,
-        AccountManagementInterface $customerAccountManagement
+        AccountManagementInterface $customerAccountManagement,
+        Url $customerUrl = null
     ) {
         $this->session = $customerSession;
         $this->resultPageFactory = $resultPageFactory;
         $this->storeManager = $storeManager;
         $this->customerAccountManagement = $customerAccountManagement;
+        $this->customerUrl = $customerUrl ?: ObjectManager::getInstance()->get(Url::class);
         parent::__construct($context);
     }
 
@@ -98,6 +108,8 @@ class Confirmation extends \Magento\Customer\Controller\AbstractAccount
         $resultPage = $this->resultPageFactory->create();
         $resultPage->getLayout()->getBlock('accountConfirmation')->setEmail(
             $this->getRequest()->getParam('email', $email)
+        )->setLoginUrl(
+            $this->customerUrl->getLoginUrl()
         );
         return $resultPage;
     }
diff --git a/app/code/Magento/Customer/Model/AccountConfirmation.php b/app/code/Magento/Customer/Model/AccountConfirmation.php
new file mode 100644
index 0000000000000000000000000000000000000000..7d01ff0efc4117aa26d71b85c1f8226d7178d8f2
--- /dev/null
+++ b/app/code/Magento/Customer/Model/AccountConfirmation.php
@@ -0,0 +1,89 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Customer\Model;
+
+use Magento\Store\Model\ScopeInterface;
+use Magento\Framework\App\Config\ScopeConfigInterface;
+use Magento\Framework\Registry;
+
+/**
+ * Class AccountConfirmation.
+ * Checks if email confirmation required for customer.
+ */
+class AccountConfirmation
+{
+    /**
+     * Configuration path for email confirmation.
+     */
+    const XML_PATH_IS_CONFIRM = 'customer/create_account/confirm';
+
+    /**
+     * @var ScopeConfigInterface
+     */
+    private $scopeConfig;
+
+    /**
+     * @var Registry
+     */
+    private $registry;
+
+    /**
+     * @param ScopeConfigInterface $scopeConfig
+     * @param Registry $registry
+     */
+    public function __construct(
+        ScopeConfigInterface $scopeConfig,
+        Registry $registry
+    ) {
+        $this->scopeConfig = $scopeConfig;
+        $this->registry = $registry;
+    }
+
+    /**
+     * Check if accounts confirmation is required.
+     *
+     * @param int|null $websiteId
+     * @param int|null $customerId
+     * @param string $customerEmail
+     * @return bool
+     */
+    public function isConfirmationRequired($websiteId, $customerId, $customerEmail): bool
+    {
+        if ($this->canSkipConfirmation($customerId, $customerEmail)) {
+            return false;
+        }
+
+        return (bool)$this->scopeConfig->getValue(
+            self::XML_PATH_IS_CONFIRM,
+            ScopeInterface::SCOPE_WEBSITES,
+            $websiteId
+        );
+    }
+
+    /**
+     * Check whether confirmation may be skipped when registering using certain email address.
+     *
+     * @param int|null $customerId
+     * @param string $customerEmail
+     * @return bool
+     */
+    private function canSkipConfirmation($customerId, $customerEmail): bool
+    {
+        if (!$customerId) {
+            return false;
+        }
+
+        /* If an email was used to start the registration process and it is the same email as the one
+           used to register, then this can skip confirmation.
+           */
+        $skipConfirmationIfEmail = $this->registry->registry("skip_confirmation_if_email");
+        if (!$skipConfirmationIfEmail) {
+            return false;
+        }
+
+        return strtolower($skipConfirmationIfEmail) === strtolower($customerEmail);
+    }
+}
diff --git a/app/code/Magento/Customer/Model/AccountManagement.php b/app/code/Magento/Customer/Model/AccountManagement.php
index 894dd5931a63c6be9e8590cc422aa2d0de92b666..8ba44f86f5a0ee68f6c9d26339a4af1dcd24a5a1 100644
--- a/app/code/Magento/Customer/Model/AccountManagement.php
+++ b/app/code/Magento/Customer/Model/AccountManagement.php
@@ -89,6 +89,10 @@ class AccountManagement implements AccountManagementInterface
      */
     const XML_PATH_FORGOT_EMAIL_IDENTITY = 'customer/password/forgot_email_identity';
 
+    /**
+     * @deprecated
+     * @see AccountConfirmation::XML_PATH_IS_CONFIRM
+     */
     const XML_PATH_IS_CONFIRM = 'customer/create_account/confirm';
 
     /**
@@ -298,6 +302,11 @@ class AccountManagement implements AccountManagementInterface
      */
     private $dateTimeFactory;
 
+    /**
+     * @var AccountConfirmation
+     */
+    private $accountConfirmation;
+
     /**
      * @param CustomerFactory $customerFactory
      * @param ManagerInterface $eventManager
@@ -323,7 +332,8 @@ class AccountManagement implements AccountManagementInterface
      * @param ObjectFactory $objectFactory
      * @param ExtensibleDataObjectConverter $extensibleDataObjectConverter
      * @param CredentialsValidator|null $credentialsValidator
-     * @param DateTimeFactory $dateTimeFactory
+     * @param DateTimeFactory|null $dateTimeFactory
+     * @param AccountConfirmation|null $accountConfirmation
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
@@ -351,7 +361,8 @@ class AccountManagement implements AccountManagementInterface
         ObjectFactory $objectFactory,
         ExtensibleDataObjectConverter $extensibleDataObjectConverter,
         CredentialsValidator $credentialsValidator = null,
-        DateTimeFactory $dateTimeFactory = null
+        DateTimeFactory $dateTimeFactory = null,
+        AccountConfirmation $accountConfirmation = null
     ) {
         $this->customerFactory = $customerFactory;
         $this->eventManager = $eventManager;
@@ -379,6 +390,8 @@ class AccountManagement implements AccountManagementInterface
         $this->credentialsValidator =
             $credentialsValidator ?: ObjectManager::getInstance()->get(CredentialsValidator::class);
         $this->dateTimeFactory = $dateTimeFactory ?: ObjectManager::getInstance()->get(DateTimeFactory::class);
+        $this->accountConfirmation = $accountConfirmation ?: ObjectManager::getInstance()
+            ->get(AccountConfirmation::class);
     }
 
     /**
@@ -1149,17 +1162,15 @@ class AccountManagement implements AccountManagementInterface
      *
      * @param CustomerInterface $customer
      * @return bool
+     * @deprecated
+     * @see AccountConfirmation::isConfirmationRequired
      */
     protected function isConfirmationRequired($customer)
     {
-        if ($this->canSkipConfirmation($customer)) {
-            return false;
-        }
-
-        return (bool)$this->scopeConfig->getValue(
-            self::XML_PATH_IS_CONFIRM,
-            ScopeInterface::SCOPE_WEBSITES,
-            $customer->getWebsiteId()
+        return $this->accountConfirmation->isConfirmationRequired(
+            $customer->getWebsiteId(),
+            $customer->getId(),
+            $customer->getEmail()
         );
     }
 
@@ -1168,6 +1179,8 @@ class AccountManagement implements AccountManagementInterface
      *
      * @param CustomerInterface $customer
      * @return bool
+     * @deprecated
+     * @see AccountConfirmation::isConfirmationRequired
      */
     protected function canSkipConfirmation($customer)
     {
diff --git a/app/code/Magento/Customer/Model/Checkout/ConfigProvider.php b/app/code/Magento/Customer/Model/Checkout/ConfigProvider.php
index a333fe8df594a97e239aefd65469fcf1b16f42aa..36eabe3571ceb267cb2cf4bafad1c7b0431ddcd9 100644
--- a/app/code/Magento/Customer/Model/Checkout/ConfigProvider.php
+++ b/app/code/Magento/Customer/Model/Checkout/ConfigProvider.php
@@ -7,6 +7,7 @@ namespace Magento\Customer\Model\Checkout;
 
 use Magento\Checkout\Model\ConfigProviderInterface;
 use Magento\Customer\Model\Url;
+use Magento\Framework\App\ObjectManager;
 use Magento\Framework\UrlInterface;
 use Magento\Store\Model\StoreManagerInterface;
 use Magento\Framework\App\Config\ScopeConfigInterface;
@@ -22,6 +23,7 @@ class ConfigProvider implements ConfigProviderInterface
 
     /**
      * @var UrlInterface
+     * @deprecated
      */
     protected $urlBuilder;
 
@@ -30,19 +32,28 @@ class ConfigProvider implements ConfigProviderInterface
      */
     protected $scopeConfig;
 
+    /**
+     * @var Url
+     */
+    private $customerUrl;
+
     /**
      * @param UrlInterface $urlBuilder
      * @param StoreManagerInterface $storeManager
      * @param ScopeConfigInterface $scopeConfig
+     * @param Url|null $customerUrl
      */
     public function __construct(
         UrlInterface $urlBuilder,
         StoreManagerInterface $storeManager,
-        ScopeConfigInterface $scopeConfig
+        ScopeConfigInterface $scopeConfig,
+        Url $customerUrl = null
     ) {
         $this->urlBuilder = $urlBuilder;
         $this->storeManager = $storeManager;
         $this->scopeConfig = $scopeConfig;
+        $this->customerUrl = $customerUrl ?? ObjectManager::getInstance()
+                ->get(Url::class);
     }
 
     /**
@@ -78,7 +89,7 @@ class ConfigProvider implements ConfigProviderInterface
      */
     protected function getLoginUrl()
     {
-        return $this->urlBuilder->getUrl(Url::ROUTE_ACCOUNT_LOGIN);
+        return $this->customerUrl->getLoginUrl();
     }
 
     /**
diff --git a/app/code/Magento/Customer/Model/Customer.php b/app/code/Magento/Customer/Model/Customer.php
index 2e2260f16ff919bc08121ba8b89ffd6439a5270c..e0a7281776de929a9f394e7b5035724ee68071c2 100644
--- a/app/code/Magento/Customer/Model/Customer.php
+++ b/app/code/Magento/Customer/Model/Customer.php
@@ -18,6 +18,7 @@ use Magento\Framework\Exception\InvalidEmailOrPasswordException;
 use Magento\Framework\Indexer\StateInterface;
 use Magento\Framework\Reflection\DataObjectProcessor;
 use Magento\Store\Model\ScopeInterface;
+use Magento\Framework\App\ObjectManager;
 
 /**
  * Customer model
@@ -58,6 +59,10 @@ class Customer extends \Magento\Framework\Model\AbstractModel
 
     const XML_PATH_RESET_PASSWORD_TEMPLATE = 'customer/password/reset_password_template';
 
+    /**
+     * @deprecated
+     * @see AccountConfirmation::XML_PATH_IS_CONFIRM
+     */
     const XML_PATH_IS_CONFIRM = 'customer/create_account/confirm';
 
     const XML_PATH_CONFIRM_EMAIL_TEMPLATE = 'customer/create_account/email_confirmation_template';
@@ -208,6 +213,11 @@ class Customer extends \Magento\Framework\Model\AbstractModel
      */
     protected $indexerRegistry;
 
+    /**
+     * @var AccountConfirmation
+     */
+    private $accountConfirmation;
+
     /**
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
@@ -229,6 +239,7 @@ class Customer extends \Magento\Framework\Model\AbstractModel
      * @param \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry
      * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
      * @param array $data
+     * @param AccountConfirmation|null $accountConfirmation
      *
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
@@ -252,7 +263,8 @@ class Customer extends \Magento\Framework\Model\AbstractModel
         \Magento\Customer\Api\CustomerMetadataInterface $metadataService,
         \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
-        array $data = []
+        array $data = [],
+        AccountConfirmation $accountConfirmation = null
     ) {
         $this->metadataService = $metadataService;
         $this->_scopeConfig = $scopeConfig;
@@ -269,6 +281,8 @@ class Customer extends \Magento\Framework\Model\AbstractModel
         $this->dataObjectProcessor = $dataObjectProcessor;
         $this->dataObjectHelper = $dataObjectHelper;
         $this->indexerRegistry = $indexerRegistry;
+        $this->accountConfirmation = $accountConfirmation ?: ObjectManager::getInstance()
+            ->get(AccountConfirmation::class);
         parent::__construct(
             $context,
             $registry,
@@ -770,20 +784,14 @@ class Customer extends \Magento\Framework\Model\AbstractModel
      * Check if accounts confirmation is required in config
      *
      * @return bool
+     * @deprecated
+     * @see AccountConfirmation::isConfirmationRequired
      */
     public function isConfirmationRequired()
     {
-        if ($this->canSkipConfirmation()) {
-            return false;
-        }
-
         $websiteId = $this->getWebsiteId() ? $this->getWebsiteId() : null;
 
-        return (bool)$this->_scopeConfig->getValue(
-            self::XML_PATH_IS_CONFIRM,
-            ScopeInterface::SCOPE_WEBSITES,
-            $websiteId
-        );
+        return $this->accountConfirmation->isConfirmationRequired($websiteId, $this->getId(), $this->getEmail());
     }
 
     /**
@@ -1156,6 +1164,8 @@ class Customer extends \Magento\Framework\Model\AbstractModel
      * Check whether confirmation may be skipped when registering using certain email address
      *
      * @return bool
+     * @deprecated
+     * @see AccountConfirmation::isConfirmationRequired
      */
     protected function canSkipConfirmation()
     {
diff --git a/app/code/Magento/Customer/Model/Options.php b/app/code/Magento/Customer/Model/Options.php
index ee109dac08104ec9612843d50d5baab357dbb156..7747e309d82a60ca383c8fab7734ed6f4c649e4f 100644
--- a/app/code/Magento/Customer/Model/Options.php
+++ b/app/code/Magento/Customer/Model/Options.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\Customer\Model;
 
+use Magento\Config\Model\Config\Source\Nooptreq as NooptreqSource;
 use Magento\Customer\Helper\Address as AddressHelper;
 use Magento\Framework\Escaper;
 
@@ -42,7 +43,10 @@ class Options
      */
     public function getNamePrefixOptions($store = null)
     {
-        return $this->_prepareNamePrefixSuffixOptions($this->addressHelper->getConfig('prefix_options', $store));
+        return $this->prepareNamePrefixSuffixOptions(
+            $this->addressHelper->getConfig('prefix_options', $store),
+            $this->addressHelper->getConfig('prefix_show', $store) == NooptreqSource::VALUE_OPTIONAL
+        );
     }
 
     /**
@@ -53,16 +57,34 @@ class Options
      */
     public function getNameSuffixOptions($store = null)
     {
-        return $this->_prepareNamePrefixSuffixOptions($this->addressHelper->getConfig('suffix_options', $store));
+        return $this->prepareNamePrefixSuffixOptions(
+            $this->addressHelper->getConfig('suffix_options', $store),
+            $this->addressHelper->getConfig('suffix_show', $store) == NooptreqSource::VALUE_OPTIONAL
+        );
+    }
+
+    /**
+     * @param $options
+     * @param bool $isOptional
+     * @return array|bool
+     *
+     * @deprecated
+     * @see prepareNamePrefixSuffixOptions()
+     */
+    protected function _prepareNamePrefixSuffixOptions($options, $isOptional = false)
+    {
+        return $this->prepareNamePrefixSuffixOptions($options, $isOptional);
     }
 
     /**
      * Unserialize and clear name prefix or suffix options
+     * If field is optional, add an empty first option.
      *
      * @param string $options
+     * @param bool $isOptional
      * @return array|bool
      */
-    protected function _prepareNamePrefixSuffixOptions($options)
+    private function prepareNamePrefixSuffixOptions($options, $isOptional = false)
     {
         $options = trim($options);
         if (empty($options)) {
@@ -74,6 +96,10 @@ class Options
             $value = $this->escaper->escapeHtml(trim($value));
             $result[$value] = $value;
         }
+        if ($isOptional && trim(current($options))) {
+            $result = array_merge([' ' => ' '], $result);
+        }
+
         return $result;
     }
 }
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Account/ConfirmationTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Account/ConfirmationTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..113f8c104a4ea62e26a9add25f847259611c5cbc
--- /dev/null
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Account/ConfirmationTest.php
@@ -0,0 +1,116 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Customer\Test\Unit\Controller\Account;
+
+use Magento\Customer\Controller\Account\Confirmation;
+use Magento\Framework\App\Request\Http;
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
+
+class ConfirmationTest extends \PHPUnit\Framework\TestCase
+{
+    /**
+     * @var Confirmation
+     */
+    private $model;
+    
+    /**
+     * @var \Magento\Customer\Model\Session|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $customerSessionMock;
+
+    /**
+     * @var \Magento\Framework\App\Action\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $contextMock;
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $resultPageFactoryMock;
+
+    /**
+     * @var \Magento\Customer\Model\Url|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $customerUrlMock;
+
+    /**
+     * @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $requestMock;
+
+    public function setUp()
+    {
+        $this->customerSessionMock = $this->getMockBuilder(\Magento\Customer\Model\Session::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['isLoggedIn'])
+            ->getMock();
+        $this->contextMock = $this->getMockBuilder(\Magento\Framework\App\Action\Context::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['getRequest'])
+            ->getMock();
+        $this->requestMock = $this->getMockBuilder(Http::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['getPost', 'getParam'])
+            ->getMock();
+        $this->contextMock->expects($this->any())
+            ->method('getRequest')
+            ->willReturn($this->requestMock);
+        
+        $this->resultPageFactoryMock = $this->getMockBuilder(\Magento\Framework\View\Result\PageFactory::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $this->customerUrlMock = $this->getMockBuilder(\Magento\Customer\Model\Url::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['getLoginUrl'])
+            ->getMock();
+        $this->model = (new ObjectManagerHelper($this))->getObject(
+            Confirmation::class,
+            [
+                'context' => $this->contextMock,
+                'customerSession' => $this->customerSessionMock,
+                'resultPageFactory' => $this->resultPageFactoryMock,
+                'customerUrl' => $this->customerUrlMock,
+            ]
+        );
+    }
+
+    public function testGetLoginUrl()
+    {
+        $this->customerSessionMock->expects($this->once())
+            ->method('isLoggedIn')
+            ->willReturn(false);
+        
+        $this->requestMock->expects($this->once())->method('getPost')->with('email')->willReturn(null);
+
+        $resultPageMock = $this->getMockBuilder(\Magento\Framework\View\Result\Page::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['getLayout'])
+            ->getMock();
+
+        $this->resultPageFactoryMock->expects($this->once())->method('create')->willReturn($resultPageMock);
+
+        $layoutMock = $this->getMockBuilder(\Magento\Framework\View\Layout::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['getBlock'])
+            ->getMock();
+
+        $resultPageMock->expects($this->once())->method('getLayout')->willReturn($layoutMock);
+
+        $blockMock = $this->getMockBuilder(\Magento\Framework\View\Element\Template::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['setEmail', 'setLoginUrl'])
+            ->getMock();
+
+        $layoutMock->expects($this->once())->method('getBlock')->with('accountConfirmation')->willReturn($blockMock);
+
+        $blockMock->expects($this->once())->method('setEmail')->willReturnSelf();
+        $blockMock->expects($this->once())->method('setLoginUrl')->willReturnSelf();
+
+        $this->model->execute();
+    }
+}
diff --git a/app/code/Magento/Customer/Test/Unit/Model/AccountConfirmationTest.php b/app/code/Magento/Customer/Test/Unit/Model/AccountConfirmationTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..ae246665b28ed09e9100220f96a7d51838e935d6
--- /dev/null
+++ b/app/code/Magento/Customer/Test/Unit/Model/AccountConfirmationTest.php
@@ -0,0 +1,93 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Customer\Test\Unit\Model;
+
+use Magento\Customer\Model\AccountConfirmation;
+use Magento\Store\Model\ScopeInterface;
+use Magento\Framework\App\Config\ScopeConfigInterface;
+use Magento\Framework\Registry;
+
+/**
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class AccountConfirmationTest extends \PHPUnit\Framework\TestCase
+{
+    /**
+     * @var AccountConfirmation|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $accountConfirmation;
+
+    /**
+     * @var ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $scopeConfig;
+
+    /**
+     * @var Registry|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $registry;
+
+    protected function setUp()
+    {
+        $this->scopeConfig = $this->createMock(ScopeConfigInterface::class);
+        $this->registry = $this->createMock(Registry::class);
+
+        $this->accountConfirmation = new AccountConfirmation(
+            $this->scopeConfig,
+            $this->registry
+        );
+    }
+
+    /**
+     * @param $customerId
+     * @param $customerEmail
+     * @param $skipConfirmationIfEmail
+     * @param $isConfirmationEnabled
+     * @param $expected
+     * @dataProvider dataProviderIsConfirmationRequired
+     */
+    public function testIsConfirmationRequired(
+        $customerId,
+        $customerEmail,
+        $skipConfirmationIfEmail,
+        $isConfirmationEnabled,
+        $expected
+    ) {
+        $websiteId = 1;
+
+        $this->scopeConfig->expects($this->any())
+            ->method('getValue')
+            ->with(
+                $this->accountConfirmation::XML_PATH_IS_CONFIRM,
+                ScopeInterface::SCOPE_WEBSITES,
+                $websiteId
+            )->willReturn($isConfirmationEnabled);
+
+        $this->registry->expects($this->any())
+            ->method('registry')
+            ->with('skip_confirmation_if_email')
+            ->willReturn($skipConfirmationIfEmail);
+
+        self::assertEquals(
+            $expected,
+            $this->accountConfirmation->isConfirmationRequired($websiteId, $customerId, $customerEmail)
+        );
+    }
+
+    /**
+     * @return array
+     */
+    public function dataProviderIsConfirmationRequired()
+    {
+        return [
+            [null, 'customer@example.com', null, true, true],
+            [null, 'customer@example.com', null, false, false],
+            [1, 'customer@example.com', 'customer@example.com', true, false],
+            [1, 'customer@example.com', 'customer1@example.com', false, false],
+            [1, 'customer@example.com', 'customer1@example.com', true, true],
+        ];
+    }
+}
diff --git a/app/code/Magento/Customer/Test/Unit/Model/AccountManagementTest.php b/app/code/Magento/Customer/Test/Unit/Model/AccountManagementTest.php
index 676e9c98a2008eebe06aca66f14602573f88c036..d72d7ec87ec3dba1454f76413f821f0159e01f7f 100644
--- a/app/code/Magento/Customer/Test/Unit/Model/AccountManagementTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Model/AccountManagementTest.php
@@ -6,6 +6,7 @@
 namespace Magento\Customer\Test\Unit\Model;
 
 use Magento\Customer\Model\AccountManagement;
+use Magento\Customer\Model\AccountConfirmation;
 use Magento\Customer\Model\AuthenticationInterface;
 use Magento\Customer\Model\EmailNotificationInterface;
 use Magento\Framework\App\Area;
@@ -120,6 +121,11 @@ class AccountManagementTest extends \PHPUnit\Framework\TestCase
      */
     private $dateTimeFactory;
 
+    /**
+     * @var AccountConfirmation|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $accountConfirmation;
+
     /**
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
@@ -170,6 +176,7 @@ class AccountManagementTest extends \PHPUnit\Framework\TestCase
             ->getMock();
 
         $this->dateTimeFactory = $this->createMock(DateTimeFactory::class);
+        $this->accountConfirmation = $this->createMock(AccountConfirmation::class);
 
         $this->objectManagerHelper = new ObjectManagerHelper($this);
         $this->accountManagement = $this->objectManagerHelper->getObject(
@@ -199,6 +206,7 @@ class AccountManagementTest extends \PHPUnit\Framework\TestCase
                 'objectFactory' => $this->objectFactory,
                 'extensibleDataObjectConverter' => $this->extensibleDataObjectConverter,
                 'dateTimeFactory' => $this->dateTimeFactory,
+                'accountConfirmation' => $this->accountConfirmation
             ]
         );
         $reflection = new \ReflectionClass(get_class($this->accountManagement));
@@ -1467,14 +1475,12 @@ class AccountManagementTest extends \PHPUnit\Framework\TestCase
     }
 
     /**
-     * @param string|null $skipConfirmationIfEmail
      * @param int $isConfirmationRequired
      * @param string|null $confirmation
      * @param string $expected
      * @dataProvider dataProviderGetConfirmationStatus
      */
     public function testGetConfirmationStatus(
-        $skipConfirmationIfEmail,
         $isConfirmationRequired,
         $confirmation,
         $expected
@@ -1492,21 +1498,16 @@ class AccountManagementTest extends \PHPUnit\Framework\TestCase
         $customerMock->expects($this->any())
             ->method('getConfirmation')
             ->willReturn($confirmation);
-        $customerMock->expects($this->any())
+        $customerMock->expects($this->once())
             ->method('getEmail')
             ->willReturn($customerEmail);
-        $customerMock->expects($this->any())
+        $customerMock->expects($this->once())
             ->method('getWebsiteId')
             ->willReturn($websiteId);
 
-        $this->registry->expects($this->once())
-            ->method('registry')
-            ->with('skip_confirmation_if_email')
-            ->willReturn($skipConfirmationIfEmail);
-
-        $this->scopeConfig->expects($this->any())
-            ->method('getValue')
-            ->with(AccountManagement::XML_PATH_IS_CONFIRM, ScopeInterface::SCOPE_WEBSITES, $websiteId)
+        $this->accountConfirmation->expects($this->once())
+            ->method('isConfirmationRequired')
+            ->with($websiteId, $customerId, $customerEmail)
             ->willReturn($isConfirmationRequired);
 
         $this->customerRepository->expects($this->once())
@@ -1523,11 +1524,11 @@ class AccountManagementTest extends \PHPUnit\Framework\TestCase
     public function dataProviderGetConfirmationStatus()
     {
         return [
-            [null, 0, null, AccountManagement::ACCOUNT_CONFIRMATION_NOT_REQUIRED],
-            ['test1@example.com', 0, null, AccountManagement::ACCOUNT_CONFIRMATION_NOT_REQUIRED],
-            ['test2@example.com', 0, null, AccountManagement::ACCOUNT_CONFIRMATION_NOT_REQUIRED],
-            ['test2@example.com', 1, null, AccountManagement::ACCOUNT_CONFIRMED],
-            ['test2@example.com', 1, 'test', AccountManagement::ACCOUNT_CONFIRMATION_REQUIRED],
+            [0, null, AccountManagement::ACCOUNT_CONFIRMATION_NOT_REQUIRED],
+            [0, null, AccountManagement::ACCOUNT_CONFIRMATION_NOT_REQUIRED],
+            [0, null, AccountManagement::ACCOUNT_CONFIRMATION_NOT_REQUIRED],
+            [1, null, AccountManagement::ACCOUNT_CONFIRMED],
+            [1, 'test', AccountManagement::ACCOUNT_CONFIRMATION_REQUIRED],
         ];
     }
 
diff --git a/app/code/Magento/Customer/Test/Unit/Model/Checkout/ConfigProviderTest.php b/app/code/Magento/Customer/Test/Unit/Model/Checkout/ConfigProviderTest.php
index 011ba9091eaf2f24b4ed26466524ee3780d81b7b..58b099a1d387d2229cab1dba2d9ec90377c743d5 100644
--- a/app/code/Magento/Customer/Test/Unit/Model/Checkout/ConfigProviderTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Model/Checkout/ConfigProviderTest.php
@@ -41,6 +41,11 @@ class ConfigProviderTest extends \PHPUnit\Framework\TestCase
      */
     protected $store;
 
+    /**
+     * @var Url|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $customerUrl;
+
     protected function setUp()
     {
         $this->storeManager = $this->getMockForAbstractClass(
@@ -49,12 +54,14 @@ class ConfigProviderTest extends \PHPUnit\Framework\TestCase
             '',
             false
         );
+
         $this->urlBuilder = $this->getMockForAbstractClass(
             \Magento\Framework\UrlInterface::class,
             [],
             '',
             false
         );
+
         $this->scopeConfig = $this->getMockForAbstractClass(
             \Magento\Framework\App\Config\ScopeConfigInterface::class,
             [],
@@ -71,10 +78,13 @@ class ConfigProviderTest extends \PHPUnit\Framework\TestCase
             ['getBaseUrl']
         );
 
+        $this->customerUrl = $this->createMock(\Magento\Customer\Model\Url::class);
+
         $this->provider = new ConfigProvider(
             $this->urlBuilder,
             $this->storeManager,
-            $this->scopeConfig
+            $this->scopeConfig,
+            $this->customerUrl
         );
     }
 
@@ -83,9 +93,8 @@ class ConfigProviderTest extends \PHPUnit\Framework\TestCase
         $loginUrl = 'http://url.test/customer/login';
         $baseUrl = 'http://base-url.test';
 
-        $this->urlBuilder->expects($this->exactly(2))
-            ->method('getUrl')
-            ->with(Url::ROUTE_ACCOUNT_LOGIN)
+        $this->customerUrl->expects($this->exactly(2))
+            ->method('getLoginUrl')
             ->willReturn($loginUrl);
         $this->storeManager->expects($this->once())
             ->method('getStore')
@@ -112,9 +121,8 @@ class ConfigProviderTest extends \PHPUnit\Framework\TestCase
         $loginUrl = 'http://base-url.test/customer/login';
         $baseUrl = 'http://base-url.test';
 
-        $this->urlBuilder->expects($this->exactly(2))
-            ->method('getUrl')
-            ->with(Url::ROUTE_ACCOUNT_LOGIN)
+        $this->customerUrl->expects($this->exactly(2))
+            ->method('getLoginUrl')
             ->willReturn($loginUrl);
         $this->storeManager->expects($this->once())
             ->method('getStore')
diff --git a/app/code/Magento/Customer/Test/Unit/Model/CustomerTest.php b/app/code/Magento/Customer/Test/Unit/Model/CustomerTest.php
index 8b3f7875e3c97d7badbca770d9edd25cb853ab2f..f5b7f08d2906d47849e4b2b96c529b12da21ab03 100644
--- a/app/code/Magento/Customer/Test/Unit/Model/CustomerTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Model/CustomerTest.php
@@ -12,7 +12,7 @@
 namespace Magento\Customer\Test\Unit\Model;
 
 use Magento\Customer\Model\Customer;
-use Magento\Store\Model\ScopeInterface;
+use Magento\Customer\Model\AccountConfirmation;
 
 /**
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -63,6 +63,11 @@ class CustomerTest extends \PHPUnit\Framework\TestCase
      */
     private $dataObjectProcessor;
 
+    /**
+     * @var AccountConfirmation|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $accountConfirmation;
+
     protected function setUp()
     {
         $this->_website = $this->createMock(\Magento\Store\Model\Website::class);
@@ -94,6 +99,7 @@ class CustomerTest extends \PHPUnit\Framework\TestCase
         $this->registryMock = $this->createPartialMock(\Magento\Framework\Registry::class, ['registry']);
         $this->_encryptor = $this->createMock(\Magento\Framework\Encryption\EncryptorInterface::class);
         $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+        $this->accountConfirmation = $this->createMock(AccountConfirmation::class);
         $this->_model = $helper->getObject(
             \Magento\Customer\Model\Customer::class,
             [
@@ -105,7 +111,8 @@ class CustomerTest extends \PHPUnit\Framework\TestCase
                 'attributeFactory' => $this->attributeFactoryMock,
                 'registry' => $this->registryMock,
                 'resource' => $this->resourceMock,
-                'dataObjectProcessor' => $this->dataObjectProcessor
+                'dataObjectProcessor' => $this->dataObjectProcessor,
+                'accountConfirmation' => $this->accountConfirmation
             ]
         );
     }
@@ -215,32 +222,27 @@ class CustomerTest extends \PHPUnit\Framework\TestCase
     /**
      * @param int $customerId
      * @param int $websiteId
-     * @param string|null $skipConfirmationIfEmail
+     * @param bool $isConfirmationRequired
      * @param bool $expected
      * @dataProvider dataProviderIsConfirmationRequired
      */
     public function testIsConfirmationRequired(
         $customerId,
         $websiteId,
-        $skipConfirmationIfEmail,
+        $isConfirmationRequired,
         $expected
     ) {
         $customerEmail = 'test1@example.com';
 
-        $this->registryMock->expects($this->any())
-            ->method('registry')
-            ->with('skip_confirmation_if_email')
-            ->willReturn($skipConfirmationIfEmail);
-
-        $this->_scopeConfigMock->expects($this->any())
-            ->method('getValue')
-            ->with(Customer::XML_PATH_IS_CONFIRM, ScopeInterface::SCOPE_WEBSITES, $websiteId)
-            ->willReturn($expected);
-
         $this->_model->setData('id', $customerId);
         $this->_model->setData('website_id', $websiteId);
         $this->_model->setData('email', $customerEmail);
 
+        $this->accountConfirmation->expects($this->once())
+            ->method('isConfirmationRequired')
+            ->with($websiteId, $customerId, $customerEmail)
+            ->willReturn($isConfirmationRequired);
+
         $this->assertEquals($expected, $this->_model->isConfirmationRequired());
     }
 
@@ -250,12 +252,9 @@ class CustomerTest extends \PHPUnit\Framework\TestCase
     public function dataProviderIsConfirmationRequired()
     {
         return [
-            [null, null, null, false],
-            [1, 1, null, false],
-            [1, 1, 'test1@example.com', false],
-            [1, 1, 'test2@example.com', true],
-            [1, 0, 'test2@example.com', true],
-            [1, null, 'test2@example.com', true],
+            [null, null, false, false],
+            [1, 1, true, true],
+            [1, null, true, true],
         ];
     }
 
diff --git a/app/code/Magento/Customer/Test/Unit/Ui/Component/Listing/Column/ConfirmationTest.php b/app/code/Magento/Customer/Test/Unit/Ui/Component/Listing/Column/ConfirmationTest.php
index e55cee49b5c94d5795c62076839fb823348110cb..b712c0f30b4307d8450013d4c0fb8bc96c6dae2a 100644
--- a/app/code/Magento/Customer/Test/Unit/Ui/Component/Listing/Column/ConfirmationTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Ui/Component/Listing/Column/ConfirmationTest.php
@@ -5,13 +5,12 @@
  */
 namespace Magento\Customer\Test\Unit\Ui\Component\Listing\Column;
 
-use Magento\Customer\Model\AccountManagement;
+use Magento\Customer\Model\AccountConfirmation;
 use Magento\Customer\Ui\Component\Listing\Column\Confirmation;
 use Magento\Framework\App\Config\ScopeConfigInterface;
 use Magento\Framework\View\Element\UiComponent\ContextInterface;
 use Magento\Framework\View\Element\UiComponent\Processor;
 use Magento\Framework\View\Element\UiComponentFactory;
-use Magento\Store\Model\ScopeInterface;
 
 class ConfirmationTest extends \PHPUnit\Framework\TestCase
 {
@@ -40,6 +39,11 @@ class ConfirmationTest extends \PHPUnit\Framework\TestCase
      */
     protected $processor;
 
+    /**
+     * @var AccountConfirmation|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $accountConfirmation;
+
     public function setup()
     {
         $this->processor = $this->getMockBuilder(\Magento\Framework\View\Element\UiComponent\Processor::class)
@@ -60,12 +64,15 @@ class ConfirmationTest extends \PHPUnit\Framework\TestCase
         $this->scopeConfig = $this->getMockBuilder(\Magento\Framework\App\Config\ScopeConfigInterface::class)
             ->getMockForAbstractClass();
 
+        $this->accountConfirmation = $this->createMock(AccountConfirmation::class);
+
         $this->confirmation = new Confirmation(
             $this->context,
             $this->uiComponentFactory,
             $this->scopeConfig,
             [],
-            []
+            [],
+            $this->accountConfirmation
         );
     }
 
@@ -81,12 +88,17 @@ class ConfirmationTest extends \PHPUnit\Framework\TestCase
         $expected
     ) {
         $websiteId = 1;
+        $customerId = 1;
+        $customerEmail = 'customer@example.com';
 
         $dataSource = [
             'data' => [
                 'items' => [
                     [
+                        'id_field_name' => 'entity_id',
+                        'entity_id' => $customerId,
                         'confirmation' => $confirmation,
+                        'email' => $customerEmail,
                         'website_id' => [
                             $websiteId,
                         ],
@@ -100,9 +112,9 @@ class ConfirmationTest extends \PHPUnit\Framework\TestCase
             ->with($this->confirmation)
             ->willReturnSelf();
 
-        $this->scopeConfig->expects($this->once())
-            ->method('getValue')
-            ->with(AccountManagement::XML_PATH_IS_CONFIRM, ScopeInterface::SCOPE_WEBSITES, $websiteId)
+        $this->accountConfirmation->expects($this->once())
+            ->method('isConfirmationRequired')
+            ->with($websiteId, $customerId, $customerEmail)
             ->willReturn($isConfirmationRequired);
         
         $this->confirmation->setData('name', 'confirmation');
diff --git a/app/code/Magento/Customer/Ui/Component/Listing/Column/Confirmation.php b/app/code/Magento/Customer/Ui/Component/Listing/Column/Confirmation.php
index dcaaa665ad392e12f8a4bad3988a44e01a45c300..1786c52844a750ca8eba53335ddc1aa404faccd9 100644
--- a/app/code/Magento/Customer/Ui/Component/Listing/Column/Confirmation.php
+++ b/app/code/Magento/Customer/Ui/Component/Listing/Column/Confirmation.php
@@ -5,35 +5,42 @@
  */
 namespace Magento\Customer\Ui\Component\Listing\Column;
 
-use Magento\Customer\Model\AccountManagement;
 use Magento\Framework\App\Config\ScopeConfigInterface;
 use Magento\Framework\View\Element\UiComponent\ContextInterface;
 use Magento\Framework\View\Element\UiComponentFactory;
-use Magento\Store\Model\ScopeInterface;
 use Magento\Ui\Component\Listing\Columns\Column;
+use Magento\Framework\App\ObjectManager;
+use Magento\Customer\Model\AccountConfirmation;
 
+/**
+ * Class Confirmation column.
+ */
 class Confirmation extends Column
 {
     /**
-     * @var ScopeConfigInterface
+     * @var AccountConfirmation
      */
-    private $scopeConfig;
+    private $accountConfirmation;
 
     /**
      * @param ContextInterface $context
      * @param UiComponentFactory $uiComponentFactory
-     * @param ScopeConfigInterface $scopeConfig
+     * @param ScopeConfigInterface $scopeConfig @deprecated
      * @param array $components
      * @param array $data
+     * @param AccountConfirmation $accountConfirmation
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
     public function __construct(
         ContextInterface $context,
         UiComponentFactory $uiComponentFactory,
         ScopeConfigInterface $scopeConfig,
         array $components,
-        array $data
+        array $data,
+        AccountConfirmation $accountConfirmation = null
     ) {
-        $this->scopeConfig = $scopeConfig;
+        $this->accountConfirmation = $accountConfirmation ?: ObjectManager::getInstance()
+            ->get(AccountConfirmation::class);
         parent::__construct($context, $uiComponentFactory, $components, $data);
     }
 
@@ -58,7 +65,13 @@ class Confirmation extends Column
      */
     private function getFieldLabel(array $item)
     {
-        if ($this->isConfirmationRequired($item)) {
+        $isConfirmationRequired = $this->accountConfirmation->isConfirmationRequired(
+            $item['website_id'][0],
+            $item[$item['id_field_name']],
+            $item['email']
+        );
+
+        if ($isConfirmationRequired) {
             if ($item[$this->getData('name')] === null) {
                 return __('Confirmed');
             }
@@ -66,19 +79,4 @@ class Confirmation extends Column
         }
         return __('Confirmation Not Required');
     }
-
-    /**
-     * Check if confirmation is required
-     *
-     * @param array $item
-     * @return bool
-     */
-    private function isConfirmationRequired(array $item)
-    {
-        return (bool)$this->scopeConfig->getValue(
-            AccountManagement::XML_PATH_IS_CONFIRM,
-            ScopeInterface::SCOPE_WEBSITES,
-            $item['website_id'][0]
-        );
-    }
 }
diff --git a/app/code/Magento/Customer/etc/adminhtml/system.xml b/app/code/Magento/Customer/etc/adminhtml/system.xml
index fa1566af0c9436cca2061221a7f0811434ba4034..31e968de14d99f49a6a7201141ca3567863366d2 100644
--- a/app/code/Magento/Customer/etc/adminhtml/system.xml
+++ b/app/code/Magento/Customer/etc/adminhtml/system.xml
@@ -210,7 +210,7 @@
                 <field id="prefix_options" translate="label comment" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="0">
                     <label>Prefix Dropdown Options</label>
                     <comment>
-                        <![CDATA[Semicolon (;) separated values.<br/>Put semicolon in the beginning for empty first option.<br/>Leave empty for open text field.]]>
+                        <![CDATA[Semicolon (;) separated values.<br/>Leave empty for open text field.]]>
                     </comment>
                 </field>
                 <field id="middlename_show" translate="label comment" type="select" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="0">
@@ -228,7 +228,7 @@
                 <field id="suffix_options" translate="label comment" sortOrder="60" showInDefault="1" showInWebsite="1" showInStore="0">
                     <label>Suffix Dropdown Options</label>
                     <comment>
-                        <![CDATA[Semicolon (;) separated values.<br/>Put semicolon in the beginning for empty first option.<br/>Leave empty for open text field.]]>
+                        <![CDATA[Semicolon (;) separated values.<br/>Leave empty for open text field.]]>
                     </comment>
                 </field>
                 <field id="dob_show" translate="label" type="select" sortOrder="70" showInDefault="1" showInWebsite="1" showInStore="0">
diff --git a/app/code/Magento/Customer/i18n/en_US.csv b/app/code/Magento/Customer/i18n/en_US.csv
index aececbf6deeb4699c8db9cddcb54bf353324f553..8768426b5c9497c88e1ad53437e03a4ec10945c4 100644
--- a/app/code/Magento/Customer/i18n/en_US.csv
+++ b/app/code/Magento/Customer/i18n/en_US.csv
@@ -479,9 +479,9 @@ Strong,Strong
 "The title that goes before name (Mr., Mrs., etc.)","The title that goes before name (Mr., Mrs., etc.)"
 "Prefix Dropdown Options","Prefix Dropdown Options"
 "
-                        Semicolon (;) separated values.<br/>Put semicolon in the beginning for empty first option.<br/>Leave empty for open text field.
+                        Semicolon (;) separated values.<br/>Leave empty for open text field.
                     ","
-                        Semicolon (;) separated values.<br/>Put semicolon in the beginning for empty first option.<br/>Leave empty for open text field.
+                        Semicolon (;) separated values.<br/>Leave empty for open text field.
                     "
 "Show Middle Name (initial)","Show Middle Name (initial)"
 "Always optional.","Always optional."
diff --git a/app/code/Magento/Customer/view/frontend/web/template/authentication-popup.html b/app/code/Magento/Customer/view/frontend/web/template/authentication-popup.html
index ad3d62f6c1c2796038cc7c969316eff4c7996edd..6b3a232cd3e3912473bc5e7619c2c2cecf006a09 100644
--- a/app/code/Magento/Customer/view/frontend/web/template/authentication-popup.html
+++ b/app/code/Magento/Customer/view/frontend/web/template/authentication-popup.html
@@ -54,10 +54,10 @@
                   id="login-form">
                 <div class="fieldset login" data-bind="attr: {'data-hasrequired': $t('* Required Fields')}">
                     <div class="field email required">
-                        <label class="label" for="email"><span data-bind="i18n: 'Email Address'"></span></label>
+                        <label class="label" for="customer-email"><span data-bind="i18n: 'Email Address'"></span></label>
                         <div class="control">
                             <input name="username"
-                                   id="email"
+                                   id="customer-email"
                                    type="email"
                                    class="input-text"
                                    data-bind="attr: {autocomplete: autocomplete}"
diff --git a/app/code/Magento/Developer/Model/XmlCatalog/Format/PhpStorm.php b/app/code/Magento/Developer/Model/XmlCatalog/Format/PhpStorm.php
index 30684b7177c997f0d2b1ddf9bcf55ea9f28596f5..1ced906cce7637251778a877ceca14fbe1f69418 100644
--- a/app/code/Magento/Developer/Model/XmlCatalog/Format/PhpStorm.php
+++ b/app/code/Magento/Developer/Model/XmlCatalog/Format/PhpStorm.php
@@ -6,11 +6,12 @@
 
 namespace Magento\Developer\Model\XmlCatalog\Format;
 
+use Magento\Framework\App\ObjectManager;
+use Magento\Framework\DomDocument\DomDocumentFactory;
 use Magento\Framework\Exception\FileSystemException;
 use Magento\Framework\Filesystem\Directory\ReadFactory;
 use Magento\Framework\Filesystem\Directory\ReadInterface;
-use Magento\Framework\Filesystem\Directory\WriteFactory;
-use Magento\Framework\Filesystem\Directory\WriteInterface;
+use Magento\Framework\Filesystem\File\WriteFactory;
 
 /**
  * Class PhpStorm generates URN catalog for PhpStorm 9
@@ -23,20 +24,28 @@ class PhpStorm implements FormatInterface
     private $currentDirRead;
 
     /**
-     * @var \Magento\Framework\Filesystem\File\WriteFactory
+     * @var WriteFactory
      */
     private $fileWriteFactory;
 
+    /**
+     * @var DomDocumentFactory
+     */
+    private $domDocumentFactory;
+
     /**
      * @param ReadFactory $readFactory
-     * @param \Magento\Framework\Filesystem\File\WriteFactory $fileWriteFactory
+     * @param WriteFactory $fileWriteFactory
+     * @param DomDocumentFactory $domDocumentFactory
      */
     public function __construct(
         ReadFactory $readFactory,
-        \Magento\Framework\Filesystem\File\WriteFactory $fileWriteFactory
+        WriteFactory $fileWriteFactory,
+        DomDocumentFactory $domDocumentFactory = null
     ) {
         $this->currentDirRead = $readFactory->create(getcwd());
         $this->fileWriteFactory = $fileWriteFactory;
+        $this->domDocumentFactory = $domDocumentFactory ?: ObjectManager::getInstance()->get(DomDocumentFactory::class);
     }
 
     /**
@@ -57,26 +66,21 @@ class PhpStorm implements FormatInterface
                 \Magento\Framework\Filesystem\DriverPool::FILE,
                 'r'
             );
-            $dom = new \DOMDocument();
-            $dom->loadXML($file->readAll());
+            $dom = $this->domDocumentFactory->create();
+            $fileContent = $file->readAll();
+            if (!empty($fileContent)) {
+                $dom->loadXML($fileContent);
+            } else {
+                $this->initEmptyFile($dom);
+            }
             $xpath = new \DOMXPath($dom);
             $nodeList = $xpath->query('/project');
             $projectNode = $nodeList->item(0);
             $file->close();
         } catch (FileSystemException $f) {
             //create file if does not exists
-            $dom = new \DOMDocument();
-            $projectNode = $dom->createElement('project');
-
-            //PhpStorm 9 version for component is "4"
-            $projectNode->setAttribute('version', '4');
-            $dom->appendChild($projectNode);
-            $rootComponentNode = $dom->createElement('component');
-
-            //PhpStorm 9 version for ProjectRootManager is "2"
-            $rootComponentNode->setAttribute('version', '2');
-            $rootComponentNode->setAttribute('name', 'ProjectRootManager');
-            $projectNode->appendChild($rootComponentNode);
+            $dom = $this->domDocumentFactory->create();
+            $projectNode = $this->initEmptyFile($dom);
         }
 
         $xpath = new \DOMXPath($dom);
@@ -103,4 +107,26 @@ class PhpStorm implements FormatInterface
         $file->write($dom->saveXML());
         $file->close();
     }
+
+    /**
+     * Setup basic empty dom elements
+     *
+     * @param \DOMDocument $dom
+     * @return \DOMElement
+     */
+    private function initEmptyFile(\DOMDocument $dom)
+    {
+        $projectNode = $dom->createElement('project');
+
+        //PhpStorm 9 version for component is "4"
+        $projectNode->setAttribute('version', '4');
+        $dom->appendChild($projectNode);
+        $rootComponentNode = $dom->createElement('component');
+
+        //PhpStorm 9 version for ProjectRootManager is "2"
+        $rootComponentNode->setAttribute('version', '2');
+        $rootComponentNode->setAttribute('name', 'ProjectRootManager');
+        $projectNode->appendChild($rootComponentNode);
+        return $projectNode;
+    }
 }
diff --git a/app/code/Magento/Directory/Model/PriceCurrency.php b/app/code/Magento/Directory/Model/PriceCurrency.php
index a211242d377f3de055fe9a4023b97e9fbf1ae6d7..07d2e60d61335da7848956e165c0da3676876c49 100644
--- a/app/code/Magento/Directory/Model/PriceCurrency.php
+++ b/app/code/Magento/Directory/Model/PriceCurrency.php
@@ -77,8 +77,7 @@ class PriceCurrency implements \Magento\Framework\Pricing\PriceCurrencyInterface
         $scope = null,
         $currency = null
     ) {
-        return $this->getCurrency($scope, $currency)
-            ->formatPrecision($amount, $precision, [], $includeContainer);
+        return $this->createCurrency($scope, $currency)->formatPrecision($amount, $precision, [], $includeContainer);
     }
 
     /**
@@ -101,20 +100,7 @@ class PriceCurrency implements \Magento\Framework\Pricing\PriceCurrencyInterface
      */
     public function getCurrency($scope = null, $currency = null)
     {
-        if ($currency instanceof Currency) {
-            $currentCurrency = $currency;
-        } elseif (is_string($currency)) {
-            $currency = $this->currencyFactory->create()
-                ->load($currency);
-            $baseCurrency = $this->getStore($scope)
-                ->getBaseCurrency();
-            $currentCurrency = $baseCurrency->getRate($currency) ? $currency : $baseCurrency;
-        } else {
-            $currentCurrency = $this->getStore($scope)
-                ->getCurrentCurrency();
-        }
-
-        return $currentCurrency;
+        return $this->createCurrency($scope, $currency, true);
     }
 
     /**
@@ -157,4 +143,30 @@ class PriceCurrency implements \Magento\Framework\Pricing\PriceCurrencyInterface
     {
         return round($price, 2);
     }
+
+    /**
+     * Get currency considering currency rate configuration.
+     *
+     * @param null|string|bool|int|\Magento\Framework\App\ScopeInterface $scope
+     * @param \Magento\Framework\Model\AbstractModel|string|null $currency
+     * @param bool $includeRate
+     *
+     * @return Currency
+     */
+    private function createCurrency($scope, $currency, bool $includeRate = false)
+    {
+        if ($currency instanceof Currency) {
+            $currentCurrency = $currency;
+        } elseif (is_string($currency)) {
+            $currentCurrency = $this->currencyFactory->create()->load($currency);
+            if ($includeRate) {
+                $baseCurrency = $this->getStore($scope)->getBaseCurrency();
+                $currentCurrency = $baseCurrency->getRate($currentCurrency) ? $currentCurrency : $baseCurrency;
+            }
+        } else {
+            $currentCurrency = $this->getStore($scope)->getCurrentCurrency();
+        }
+
+        return $currentCurrency;
+    }
 }
diff --git a/app/code/Magento/Eav/Model/Attribute/GroupRepository.php b/app/code/Magento/Eav/Model/Attribute/GroupRepository.php
index 9d0fa78668382d5c8b99641cbe844a66ad83c825..0714f8efac88cf6f6d51455267c99889f955793b 100644
--- a/app/code/Magento/Eav/Model/Attribute/GroupRepository.php
+++ b/app/code/Magento/Eav/Model/Attribute/GroupRepository.php
@@ -117,16 +117,6 @@ class GroupRepository implements \Magento\Eav\Api\AttributeGroupRepositoryInterf
      */
     public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
     {
-        $attributeSetId = $this->retrieveAttributeSetIdFromSearchCriteria($searchCriteria);
-        if (!$attributeSetId) {
-            throw InputException::requiredField('attribute_set_id');
-        }
-        try {
-            $this->setRepository->get($attributeSetId);
-        } catch (\Exception $exception) {
-            throw NoSuchEntityException::singleField('attributeSetId', $attributeSetId);
-        }
-
         /** @var \Magento\Eav\Model\ResourceModel\Entity\Attribute\Group\Collection $collection */
         $collection = $this->groupListFactory->create();
         $this->joinProcessor->process($collection);
@@ -188,6 +178,7 @@ class GroupRepository implements \Magento\Eav\Api\AttributeGroupRepositoryInterf
     /**
      * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
      * @return null|string
+     * @deprecated
      */
     protected function retrieveAttributeSetIdFromSearchCriteria(
         \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
diff --git a/app/code/Magento/Eav/Model/Config.php b/app/code/Magento/Eav/Model/Config.php
index cc68709cd3b038151e85c2495be00ee6a0e6fe27..0eecca21b0d542982e3dcfe09a88529f3c1c9e22 100644
--- a/app/code/Magento/Eav/Model/Config.php
+++ b/app/code/Magento/Eav/Model/Config.php
@@ -503,6 +503,7 @@ class Config
         }
 
         if (isset($this->attributes[$entityTypeCode][$code])) {
+            \Magento\Framework\Profiler::stop('EAV: ' . __METHOD__);
             return $this->attributes[$entityTypeCode][$code];
         }
 
diff --git a/app/code/Magento/Eav/Model/Entity/AbstractEntity.php b/app/code/Magento/Eav/Model/Entity/AbstractEntity.php
index 0c74b84457d408b5a9920334e3724563c73ba187..b0d186705026f86b681c9997535f43ebe8869530 100644
--- a/app/code/Magento/Eav/Model/Entity/AbstractEntity.php
+++ b/app/code/Magento/Eav/Model/Entity/AbstractEntity.php
@@ -13,6 +13,7 @@ use Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend;
 use Magento\Eav\Model\Entity\Attribute\Frontend\AbstractFrontend;
 use Magento\Eav\Model\Entity\Attribute\Source\AbstractSource;
 use Magento\Framework\App\Config\Element;
+use Magento\Framework\DataObject;
 use Magento\Framework\DB\Adapter\DuplicateException;
 use Magento\Framework\Exception\AlreadyExistsException;
 use Magento\Framework\Exception\LocalizedException;
@@ -62,6 +63,13 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
      */
     protected $_attributesByCode = [];
 
+    /**
+     * Attributes stored by scope (store id and attribute set id).
+     *
+     * @var array
+     */
+    private $attributesByScope = [];
+
     /**
      * Two-dimensional array by table name and attribute name
      *
@@ -473,6 +481,46 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
         return $this;
     }
 
+    /**
+     * Adding attribute to entity by scope.
+     *
+     * @param AbstractAttribute $attribute
+     * @param DataObject|null $entity
+     * @return $this
+     */
+    public function addAttributeByScope(AbstractAttribute $attribute, $entity = null)
+    {
+        $suffix = $entity !== null ? $this->getAttributesCacheSuffix($entity) : '0-0';
+        $attributeCode = $attribute->getAttributeCode();
+        $this->attributesByScope[$suffix][$attributeCode] = $attribute;
+        return $this->addAttribute($attribute);
+    }
+
+    /**
+     * Get attributes by scope
+     *
+     * @return array
+     */
+    private function getAttributesByScope($suffix)
+    {
+        return !empty($this->attributesByScope[$suffix])
+            ? $this->attributesByScope[$suffix]
+            : $this->getAttributesByCode();
+    }
+
+    /**
+     * Get attributes cache suffix.
+     *
+     * @param DataObject $object
+     * @return string
+     */
+    private function getAttributesCacheSuffix(DataObject $object)
+    {
+        $attributeSetId = $object->getAttributeSetId() ?: 0;
+        $storeId = $object->getStoreId() ?: 0;
+        return $storeId . '-' . $attributeSetId;
+     }
+
     /**
      * Retrieve partial load flag
      *
@@ -506,7 +554,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Retrieve configuration for all attributes
      *
-     * @param null|\Magento\Framework\DataObject $object
+     * @param null|DataObject $object
      * @return $this
      */
     public function loadAllAttributes($object = null)
@@ -566,7 +614,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Check whether the attribute is Applicable to the object
      *
-     * @param   \Magento\Framework\DataObject $object
+     * @param   DataObject $object
      * @param   AbstractAttribute $attribute
      * @return  bool
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
@@ -611,7 +659,8 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
                 break;
         }
         $results = [];
-        foreach ($this->getAttributesByCode() as $attrCode => $attribute) {
+        $suffix = $this->getAttributesCacheSuffix($args[0]);
+        foreach ($this->getAttributesByScope($suffix) as $attrCode => $attribute) {
             if (isset($args[0]) && is_object($args[0]) && !$this->_isApplicableAttribute($args[0], $attribute)) {
                 continue;
             }
@@ -830,7 +879,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Validate all object's attributes against configuration
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @throws \Magento\Eav\Model\Entity\Attribute\Exception
      * @return true|array
      */
@@ -856,10 +905,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Set new increment id to object
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @return $this
      */
-    public function setNewIncrementId(\Magento\Framework\DataObject $object)
+    public function setNewIncrementId(DataObject $object)
     {
         if ($object->getIncrementId()) {
             return $this;
@@ -878,7 +927,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
      * Check attribute unique value
      *
      * @param AbstractAttribute $attribute
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @return bool
      */
     public function checkAttributeUniqueValue(AbstractAttribute $attribute, $object)
@@ -1051,7 +1100,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Retrieve select object for loading base entity row
      *
-     * @param   \Magento\Framework\DataObject $object
+     * @param   DataObject $object
      * @param   string|int $rowId
      * @return  \Magento\Framework\DB\Select
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
@@ -1071,7 +1120,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Retrieve select object for loading entity attributes values
      *
-     * @param   \Magento\Framework\DataObject $object
+     * @param   DataObject $object
      * @param   string $table
      * @return  \Magento\Framework\DB\Select
      */
@@ -1091,7 +1140,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Initialize attribute value for object
      *
-     * @param   \Magento\Framework\DataObject $object
+     * @param   DataObject $object
      * @param   array $valueRow
      * @return $this
      */
@@ -1181,8 +1230,8 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Retrieve Object instance with original data
      *
-     * @param \Magento\Framework\DataObject $object
-     * @return \Magento\Framework\DataObject
+     * @param DataObject $object
+     * @return DataObject
      */
     protected function _getOrigObject($object)
     {
@@ -1422,7 +1471,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
         /**
          * Process base row
          */
-        $entityObject = new \Magento\Framework\DataObject($entityRow);
+        $entityObject = new DataObject($entityRow);
         $entityRow = $this->_prepareDataForTable($entityObject, $entityTable);
         if ($insertEntity) {
             if (!empty($entityId)) {
@@ -1477,7 +1526,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Insert entity attribute value
      *
-     * @param   \Magento\Framework\DataObject $object
+     * @param   DataObject $object
      * @param   AbstractAttribute $attribute
      * @param   mixed $value
      * @return $this
@@ -1490,7 +1539,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Update entity attribute value
      *
-     * @param   \Magento\Framework\DataObject $object
+     * @param   DataObject $object
      * @param   AbstractAttribute $attribute
      * @param   mixed $valueId
      * @param   mixed $value
@@ -1585,10 +1634,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Delete entity attribute values
      *
-     * @param   \Magento\Framework\DataObject $object
+     * @param   DataObject $object
      * @param   string $table
      * @param   array $info
-     * @return  \Magento\Framework\DataObject
+     * @return  DataObject
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
     protected function _deleteAttributes($object, $table, $info)
@@ -1614,13 +1663,13 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Save attribute
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @param string $attributeCode
      * @return $this
      * @throws \Exception
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
-    public function saveAttribute(\Magento\Framework\DataObject $object, $attributeCode)
+    public function saveAttribute(DataObject $object, $attributeCode)
     {
         $attribute = $this->getAttribute($attributeCode);
         $backend = $attribute->getBackend();
@@ -1666,8 +1715,8 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Return attribute row to prepare where statement
      *
-     * @param \Magento\Framework\DataObject $entity
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $entity
+     * @param DataObject $object
      * @param \Magento\Eav\Model\Entity\Attribute\AbstractAttribute $attribute
      * @return array
      */
@@ -1688,7 +1737,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Delete entity using current object's data
      *
-     * @param \Magento\Framework\DataObject|int|string $object
+     * @param DataObject|int|string $object
      * @return $this
      * @throws \Exception
      * @SuppressWarnings(PHPMD.UnusedLocalVariable)
@@ -1730,7 +1779,7 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Evaluate Delete operations
      *
-     * @param \Magento\Framework\DataObject|int|string $object
+     * @param DataObject|int|string $object
      * @param string|int $id
      * @param \Magento\Framework\DB\Adapter\AdapterInterface $connection
      * @return void
@@ -1764,10 +1813,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * After Load Entity process
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @return $this
      */
-    protected function _afterLoad(\Magento\Framework\DataObject $object)
+    protected function _afterLoad(DataObject $object)
     {
         \Magento\Framework\Profiler::start('after_load');
         $this->walkAttributes('backend/afterLoad', [$object]);
@@ -1778,10 +1827,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Before delete Entity process
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @return $this
      */
-    protected function _beforeSave(\Magento\Framework\DataObject $object)
+    protected function _beforeSave(DataObject $object)
     {
         $this->walkAttributes('backend/beforeSave', [$object]);
         return $this;
@@ -1790,10 +1839,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * After Save Entity process
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @return $this
      */
-    protected function _afterSave(\Magento\Framework\DataObject $object)
+    protected function _afterSave(DataObject $object)
     {
         $this->walkAttributes('backend/afterSave', [$object]);
         return $this;
@@ -1802,10 +1851,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Before Delete Entity process
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @return $this
      */
-    protected function _beforeDelete(\Magento\Framework\DataObject $object)
+    protected function _beforeDelete(DataObject $object)
     {
         $this->walkAttributes('backend/beforeDelete', [$object]);
         return $this;
@@ -1814,10 +1863,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * After delete entity process
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @return $this
      */
-    protected function _afterDelete(\Magento\Framework\DataObject $object)
+    protected function _afterDelete(DataObject $object)
     {
         $this->walkAttributes('backend/afterDelete', [$object]);
         return $this;
@@ -1887,10 +1936,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Perform actions after entity load
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @since 100.1.0
      */
-    public function afterLoad(\Magento\Framework\DataObject $object)
+    public function afterLoad(DataObject $object)
     {
         $this->_afterLoad($object);
     }
@@ -1898,10 +1947,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Perform actions before entity save
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @since 100.1.0
      */
-    public function beforeSave(\Magento\Framework\DataObject $object)
+    public function beforeSave(DataObject $object)
     {
         $this->_beforeSave($object);
     }
@@ -1909,10 +1958,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Perform actions after entity save
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @since 100.1.0
      */
-    public function afterSave(\Magento\Framework\DataObject $object)
+    public function afterSave(DataObject $object)
     {
         $this->_afterSave($object);
     }
@@ -1920,10 +1969,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Perform actions before entity delete
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @since 100.1.0
      */
-    public function beforeDelete(\Magento\Framework\DataObject $object)
+    public function beforeDelete(DataObject $object)
     {
         $this->_beforeDelete($object);
     }
@@ -1931,10 +1980,10 @@ abstract class AbstractEntity extends AbstractResource implements EntityInterfac
     /**
      * Perform actions after entity delete
      *
-     * @param \Magento\Framework\DataObject $object
+     * @param DataObject $object
      * @since 100.1.0
      */
-    public function afterDelete(\Magento\Framework\DataObject $object)
+    public function afterDelete(DataObject $object)
     {
         $this->_afterDelete($object);
     }
diff --git a/app/code/Magento/Eav/Model/Entity/AttributeLoader.php b/app/code/Magento/Eav/Model/Entity/AttributeLoader.php
index a925f8e78ff336e0bea3811e7347ce1b5b81722d..bb452ad54ac842a42710c40af6694a4e7c430499 100644
--- a/app/code/Magento/Eav/Model/Entity/AttributeLoader.php
+++ b/app/code/Magento/Eav/Model/Entity/AttributeLoader.php
@@ -51,13 +51,13 @@ class AttributeLoader implements AttributeLoaderInterface
      * Retrieve configuration for all attributes
      *
      * @param AbstractEntity $resource
-     * @param DataObject|null $object
+     * @param DataObject|null $entity
      * @return AbstractEntity
      * @throws LocalizedException
      */
-    public function loadAllAttributes(AbstractEntity $resource, DataObject $object = null)
+    public function loadAllAttributes(AbstractEntity $resource, DataObject $entity = null)
     {
-        $attributes = $this->config->getEntityAttributes($resource->getEntityType(), $object);
+        $attributes = $this->config->getEntityAttributes($resource->getEntityType(), $entity);
         $attributeCodes = array_keys($attributes);
         /**
          * Check and init default attributes
@@ -67,10 +67,10 @@ class AttributeLoader implements AttributeLoaderInterface
         $resource->unsetAttributes();
 
         foreach ($defaultAttributesCodes as $attributeCode) {
-            $resource->addAttribute($this->_getDefaultAttribute($resource, $attributeCode));
+            $resource->addAttributeByScope($this->_getDefaultAttribute($resource, $attributeCode), $entity);
         }
         foreach ($attributes as $attributeCode => $attribute) {
-            $resource->addAttribute($attribute);
+            $resource->addAttributeByScope($attribute, $entity);
         }
         return $resource;
     }
diff --git a/app/code/Magento/Eav/Model/Entity/AttributeLoaderInterface.php b/app/code/Magento/Eav/Model/Entity/AttributeLoaderInterface.php
index f3f8745fc535bd6f35e6993dbfe729f7ed1d0076..2440492070c66493d8a8cb78ed2a7872d171582a 100644
--- a/app/code/Magento/Eav/Model/Entity/AttributeLoaderInterface.php
+++ b/app/code/Magento/Eav/Model/Entity/AttributeLoaderInterface.php
@@ -17,8 +17,8 @@ interface AttributeLoaderInterface
      * Retrieve configuration for all attributes
      *
      * @param AbstractEntity $resource
-     * @param DataObject|null $object
+     * @param DataObject|null $entity
      * @return AbstractEntity
      */
-    public function loadAllAttributes(AbstractEntity $resource, DataObject $object = null);
+    public function loadAllAttributes(AbstractEntity $resource, DataObject $entity = null);
 }
diff --git a/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php b/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php
index bd3fd17393d7cfb80a8aff1fd3f7a782063f59dd..f623cfc8c7b37e475fd55b25164cbbd06811e7a3 100644
--- a/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php
+++ b/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php
@@ -920,6 +920,7 @@ abstract class AbstractCollection extends AbstractDb implements SourceProviderIn
         foreach ($this->_items as $item) {
             $item->setOrigData();
             $this->beforeAddLoadedItem($item);
+            $item->setDataChanges(false);
         }
         \Magento\Framework\Profiler::stop('set_orig_data');
 
diff --git a/app/code/Magento/Eav/Test/Unit/Model/Attribute/GroupRepositoryTest.php b/app/code/Magento/Eav/Test/Unit/Model/Attribute/GroupRepositoryTest.php
index c07122e049a7483515572b18b18f21d8573203b9..9b0f9704887bbd677830615d138e099fa4538b2d 100644
--- a/app/code/Magento/Eav/Test/Unit/Model/Attribute/GroupRepositoryTest.php
+++ b/app/code/Magento/Eav/Test/Unit/Model/Attribute/GroupRepositoryTest.php
@@ -266,8 +266,6 @@ class GroupRepositoryTest extends \PHPUnit\Framework\TestCase
      */
     public function testGetList()
     {
-        $attributeSetId = 'filter';
-
         $filterInterfaceMock = $this->getMockBuilder(\Magento\Framework\Api\Search\FilterGroup::class)
             ->disableOriginalConstructor()
             ->setMethods([
@@ -275,24 +273,18 @@ class GroupRepositoryTest extends \PHPUnit\Framework\TestCase
                 'getValue',
             ])
             ->getMock();
-        $filterInterfaceMock->expects($this->once())
-            ->method('getField')
-            ->willReturn('attribute_set_id');
-        $filterInterfaceMock->expects($this->once())
-            ->method('getValue')
-            ->willReturn($attributeSetId);
 
         $filterGroupMock = $this->getMockBuilder(\Magento\Framework\Api\Search\FilterGroup::class)
             ->disableOriginalConstructor()
             ->getMock();
-        $filterGroupMock->expects($this->once())
+        $filterGroupMock->expects($this->any())
             ->method('getFilters')
             ->willReturn([$filterInterfaceMock]);
 
         $searchCriteriaMock = $this->getMockBuilder(\Magento\Framework\Api\SearchCriteriaInterface::class)
             ->disableOriginalConstructor()
             ->getMock();
-        $searchCriteriaMock->expects($this->once())
+        $searchCriteriaMock->expects($this->any())
             ->method('getFilterGroups')
             ->willReturn([$filterGroupMock]);
 
@@ -324,52 +316,6 @@ class GroupRepositoryTest extends \PHPUnit\Framework\TestCase
         $this->assertEquals($searchResultsMock, $this->model->getList($searchCriteriaMock));
     }
 
-    /**
-     * Test get list with invalid input exception
-     *
-     * @expectedException \Magento\Framework\Exception\InputException
-     * @expectedExceptionMessage attribute_set_id is a required field.
-     * @throws \Magento\Framework\Exception\InputException
-     * @throws \Magento\Framework\Exception\NoSuchEntityException
-     * @return void
-     */
-    public function testGetListWithInvalidInputException()
-    {
-        $searchCriteriaMock = $this->createMock(\Magento\Framework\Api\SearchCriteriaInterface::class);
-        $searchCriteriaMock->expects($this->once())->method('getFilterGroups')->willReturn([]);
-        $this->model->getList($searchCriteriaMock);
-    }
-
-    /**
-     * Test get list with no such entity exception
-     *
-     * @expectedException \Magento\Framework\Exception\NoSuchEntityException
-     * @expectedExceptionMessage No such entity with attributeSetId = filter
-     * @throws \Magento\Framework\Exception\InputException
-     * @throws \Magento\Framework\Exception\NoSuchEntityException
-     * @return void
-     */
-    public function testGetListWithNoSuchEntityException()
-    {
-        $attributeSetId = 'filter';
-        $searchCriteriaMock = $this->createMock(\Magento\Framework\Api\SearchCriteriaInterface::class);
-        $filterGroupMock = $this->createMock(\Magento\Framework\Api\Search\FilterGroup::class);
-        $filterInterfaceMock = $this->createMock(\Magento\Framework\Api\Filter::class);
-
-        $searchCriteriaMock->expects($this->once())->method('getFilterGroups')->willReturn([$filterGroupMock]);
-
-        $filterGroupMock->expects($this->once())->method('getFilters')->willReturn([$filterInterfaceMock]);
-        $filterInterfaceMock->expects($this->once())->method('getField')->willReturn('attribute_set_id');
-        $filterInterfaceMock->expects($this->once())->method('getValue')->willReturn($attributeSetId);
-
-        $searchCriteriaMock->expects($this->once())->method('getFilterGroups')->willReturn([]);
-        $this->setRepositoryMock->expects($this->once())
-            ->method('get')
-            ->with($attributeSetId)
-            ->willThrowException(new \Exception());
-        $this->model->getList($searchCriteriaMock);
-    }
-
     /**
      * Test get
      *
diff --git a/app/code/Magento/Eav/Test/Unit/Model/Entity/AbstractEntityTest.php b/app/code/Magento/Eav/Test/Unit/Model/Entity/AbstractEntityTest.php
index 682907e9c0a23a829f54413f5ee77b14aef5847d..67899dc3902ebd362b8083a827afc15dfd0b85bd 100644
--- a/app/code/Magento/Eav/Test/Unit/Model/Entity/AbstractEntityTest.php
+++ b/app/code/Magento/Eav/Test/Unit/Model/Entity/AbstractEntityTest.php
@@ -320,19 +320,29 @@ class AbstractEntityTest extends \PHPUnit\Framework\TestCase
             [
                 'test_attr',
                 $attributeSetId,
-                ['test_attr' => 'test_attr', 'attribute_set_id' => $attributeSetId, 'entity_id' => null],
+                [
+                    'test_attr' => 'test_attr',
+                    'attribute_set_id' => $attributeSetId,
+                    'entity_id' => null,
+                    'store_id' => 1
+                ],
                 null,
             ],
             [
                 'test_attr',
                 $attributeSetId,
-                ['test_attr' => 'test_attr', 'attribute_set_id' => $attributeSetId, 'entity_id' => 12345],
+                [
+                    'test_attr' => 'test_attr',
+                    'attribute_set_id' => $attributeSetId,
+                    'entity_id' => 12345,
+                    'store_id' => 1
+                ],
                 ['test_attr' => 'test_attr']
             ],
             [
                 'test_attr',
                 $attributeSetId,
-                ['test_attr' => '99.99', 'attribute_set_id' => $attributeSetId, 'entity_id' => 12345],
+                ['test_attr' => '99.99', 'attribute_set_id' => $attributeSetId, 'entity_id' => 12345, 'store_id' => 1],
                 ['test_attr' => '99.9900']
             ]
         ];
diff --git a/app/code/Magento/Eav/Test/Unit/Model/Entity/AttributeLoaderTest.php b/app/code/Magento/Eav/Test/Unit/Model/Entity/AttributeLoaderTest.php
index 3cfc3dafda3f52ff96350e05210a677728169fa6..3370695b47d7e6e1c6e6c32a31071ebce4e37987 100644
--- a/app/code/Magento/Eav/Test/Unit/Model/Entity/AttributeLoaderTest.php
+++ b/app/code/Magento/Eav/Test/Unit/Model/Entity/AttributeLoaderTest.php
@@ -78,7 +78,7 @@ class AttributeLoaderTest extends \PHPUnit\Framework\TestCase
         $attributeMock->expects($this->once())->method('setIsGlobal')->with(1)->willReturnSelf();
         $attributeMock->expects($this->once())->method('setEntityType')->with($this->entityTypeMock)->willReturnSelf();
         $attributeMock->expects($this->once())->method('setEntityTypeId')->with($entityTypeId)->willReturnSelf();
-        $this->entityMock->expects($this->once())->method('addAttribute')->with($attributeMock)->willReturnSelf();
+        $this->entityMock->expects($this->once())->method('addAttributeByScope')->willReturnSelf();
         $this->attributeLoader->loadAllAttributes($this->entityMock, $dataObject);
     }
 
@@ -102,8 +102,7 @@ class AttributeLoaderTest extends \PHPUnit\Framework\TestCase
             ->method('getEntityAttributes')->willReturn($attributeCodes);
         $this->entityMock->expects($this->once())->method('getDefaultAttributes')->willReturn($defaultAttributes);
         $this->entityMock->expects($this->once())->method('unsetAttributes')->willReturnSelf();
-        $this->entityMock->expects($this->atLeastOnce())
-            ->method('addAttribute')->with($attributeMock)->willReturnSelf();
+        $this->entityMock->expects($this->atLeastOnce())->method('addAttributeByScope')->willReturnSelf();
         $this->objectManagerMock->expects($this->never())->method('create');
         $this->attributeLoader->loadAllAttributes($this->entityMock, $dataObject);
     }
diff --git a/app/code/Magento/Newsletter/Model/Subscriber.php b/app/code/Magento/Newsletter/Model/Subscriber.php
index cc143fdc52e3b4466be0a293b67d7fb85f31ec1e..b8d7ccf83af7ccc29a6e322e769cd39b267030d5 100644
--- a/app/code/Magento/Newsletter/Model/Subscriber.php
+++ b/app/code/Magento/Newsletter/Model/Subscriber.php
@@ -633,6 +633,8 @@ class Subscriber extends \Magento\Framework\Model\AbstractModel
             $this->setStatus(self::STATUS_SUBSCRIBED)
                 ->setStatusChanged(true)
                 ->save();
+
+            $this->sendConfirmationSuccessEmail();
             return true;
         }
 
diff --git a/app/code/Magento/Newsletter/Test/Unit/Model/SubscriberTest.php b/app/code/Magento/Newsletter/Test/Unit/Model/SubscriberTest.php
index 5a4032dc4dffd8361f385e0b88c7e35cc0727531..7dd96be11bcbe8b7db60f83fc19e77453f5e6eee 100644
--- a/app/code/Magento/Newsletter/Test/Unit/Model/SubscriberTest.php
+++ b/app/code/Magento/Newsletter/Test/Unit/Model/SubscriberTest.php
@@ -341,6 +341,21 @@ class SubscriberTest extends \PHPUnit\Framework\TestCase
         $code = 111;
         $this->subscriber->setCode($code);
         $this->resource->expects($this->once())->method('save')->willReturnSelf();
+        $storeModel = $this->getMockBuilder(\Magento\Store\Model\Store::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['getId'])
+            ->getMock();
+        $transport = $this->createMock(\Magento\Framework\Mail\TransportInterface::class);
+        $this->scopeConfig->expects($this->any())->method('getValue')->willReturn(true);
+        $this->transportBuilder->expects($this->once())->method('setTemplateIdentifier')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('setTemplateOptions')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('setTemplateVars')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('setFrom')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('addTo')->willReturnSelf();
+        $this->storeManager->expects($this->any())->method('getStore')->willReturn($storeModel);
+        $storeModel->expects($this->any())->method('getId')->willReturn(1);
+        $this->transportBuilder->expects($this->once())->method('getTransport')->willReturn($transport);
+        $transport->expects($this->once())->method('sendMessage')->willReturnSelf();
 
         $this->assertTrue($this->subscriber->confirm($code));
     }
diff --git a/app/code/Magento/Payment/Gateway/Command/GatewayCommand.php b/app/code/Magento/Payment/Gateway/Command/GatewayCommand.php
index a6f9d4383918c92d9e7a55b0dee57963e9fa5f01..bb07408ad0e06a3857315879cc23f9bf25cca425 100644
--- a/app/code/Magento/Payment/Gateway/Command/GatewayCommand.php
+++ b/app/code/Magento/Payment/Gateway/Command/GatewayCommand.php
@@ -5,14 +5,13 @@
  */
 namespace Magento\Payment\Gateway\Command;
 
-use Magento\Framework\Phrase;
 use Magento\Payment\Gateway\CommandInterface;
+use Magento\Payment\Gateway\ErrorMapper\ErrorMessageMapperInterface;
 use Magento\Payment\Gateway\Http\ClientInterface;
 use Magento\Payment\Gateway\Http\TransferFactoryInterface;
-use Magento\Payment\Gateway\Request;
 use Magento\Payment\Gateway\Request\BuilderInterface;
-use Magento\Payment\Gateway\Response;
 use Magento\Payment\Gateway\Response\HandlerInterface;
+use Magento\Payment\Gateway\Validator\ResultInterface;
 use Magento\Payment\Gateway\Validator\ValidatorInterface;
 use Psr\Log\LoggerInterface;
 
@@ -54,6 +53,11 @@ class GatewayCommand implements CommandInterface
      */
     private $logger;
 
+    /**
+     * @var ErrorMessageMapperInterface
+     */
+    private $errorMessageMapper;
+
     /**
      * @param BuilderInterface $requestBuilder
      * @param TransferFactoryInterface $transferFactory
@@ -61,6 +65,7 @@ class GatewayCommand implements CommandInterface
      * @param LoggerInterface $logger
      * @param HandlerInterface $handler
      * @param ValidatorInterface $validator
+     * @param ErrorMessageMapperInterface|null $errorMessageMapper
      */
     public function __construct(
         BuilderInterface $requestBuilder,
@@ -68,7 +73,8 @@ class GatewayCommand implements CommandInterface
         ClientInterface $client,
         LoggerInterface $logger,
         HandlerInterface $handler = null,
-        ValidatorInterface $validator = null
+        ValidatorInterface $validator = null,
+        ErrorMessageMapperInterface $errorMessageMapper = null
     ) {
         $this->requestBuilder = $requestBuilder;
         $this->transferFactory = $transferFactory;
@@ -76,6 +82,7 @@ class GatewayCommand implements CommandInterface
         $this->handler = $handler;
         $this->validator = $validator;
         $this->logger = $logger;
+        $this->errorMessageMapper = $errorMessageMapper;
     }
 
     /**
@@ -98,10 +105,7 @@ class GatewayCommand implements CommandInterface
                 array_merge($commandSubject, ['response' => $response])
             );
             if (!$result->isValid()) {
-                $this->logExceptions($result->getFailsDescription());
-                throw new CommandException(
-                    __('Transaction has been declined. Please try again later.')
-                );
+                $this->processErrors($result);
             }
         }
 
@@ -114,13 +118,33 @@ class GatewayCommand implements CommandInterface
     }
 
     /**
-     * @param Phrase[] $fails
-     * @return void
+     * Tries to map error messages from validation result and logs processed message.
+     * Throws an exception with mapped message or default error.
+     *
+     * @param ResultInterface $result
+     * @throws CommandException
      */
-    private function logExceptions(array $fails)
+    private function processErrors(ResultInterface $result)
     {
-        foreach ($fails as $failPhrase) {
-            $this->logger->critical((string) $failPhrase);
+        $messages = [];
+        foreach ($result->getFailsDescription() as $failPhrase) {
+            $message = (string) $failPhrase;
+
+            // error messages mapper can be not configured if payment method doesn't have custom error messages.
+            if ($this->errorMessageMapper !== null) {
+                $mapped = (string) $this->errorMessageMapper->getMessage($message);
+                if (!empty($mapped)) {
+                    $messages[] = $mapped;
+                    $message = $mapped;
+                }
+            }
+            $this->logger->critical('Payment Error: ' . $message);
         }
+
+        throw new CommandException(
+            !empty($messages)
+                ? __(implode(PHP_EOL, $messages))
+                : __('Transaction has been declined. Please try again later.')
+        );
     }
 }
diff --git a/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapper.php b/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapper.php
new file mode 100644
index 0000000000000000000000000000000000000000..c5759d41bf4d73f5f674efcc780128be72b699d5
--- /dev/null
+++ b/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapper.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Payment\Gateway\ErrorMapper;
+
+use Magento\Framework\Config\DataInterface;
+
+/**
+ * This class can be used for payment integrations which can validate different type of
+ * error messages per one request.
+ * For example, during authorization payment operation the payment integration can validate error messages
+ * related to credit card details and customer address data.
+ * In that case, this implementation can be extended via di.xml and configured with appropriate mappers.
+ */
+class ErrorMessageMapper implements ErrorMessageMapperInterface
+{
+    /**
+     * @var DataInterface
+     */
+    private $messageMapping;
+
+    /**
+     * @param DataInterface $messageMapping
+     */
+    public function __construct(DataInterface $messageMapping)
+    {
+        $this->messageMapping = $messageMapping;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getMessage(string $code)
+    {
+        $message = $this->messageMapping->get($code);
+        return $message ? __($message) : null;
+    }
+}
diff --git a/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapperInterface.php b/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapperInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..077226fd9a062b5a8fb148b6c30b0d07c375092e
--- /dev/null
+++ b/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapperInterface.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Payment\Gateway\ErrorMapper;
+
+use Magento\Framework\Phrase;
+
+/**
+ * Interface to provide customization for payment validation errors.
+ */
+interface ErrorMessageMapperInterface
+{
+    /**
+     * Returns customized error message by provided code.
+     * If message not found `null` will be returned.
+     *
+     * @param string $code
+     * @return Phrase|null
+     */
+    public function getMessage(string $code);
+}
diff --git a/app/code/Magento/Payment/Gateway/ErrorMapper/MappingData.php b/app/code/Magento/Payment/Gateway/ErrorMapper/MappingData.php
new file mode 100644
index 0000000000000000000000000000000000000000..8ae29c7a729e745f1ec36e0b979f5214c05c2a71
--- /dev/null
+++ b/app/code/Magento/Payment/Gateway/ErrorMapper/MappingData.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Payment\Gateway\ErrorMapper;
+
+use Magento\Framework\Config\Data\Scoped;
+
+/**
+ * Extends Scoped class to override `_scopePriorityScheme` property.
+ * It allows to load and merge config files from `global` scope and current scope to a single structure.
+ */
+class MappingData extends Scoped
+{
+    /**
+     * @inheritdoc
+     */
+    protected $_scopePriorityScheme = ['global'];
+}
diff --git a/app/code/Magento/Payment/Gateway/ErrorMapper/NullMappingData.php b/app/code/Magento/Payment/Gateway/ErrorMapper/NullMappingData.php
new file mode 100644
index 0000000000000000000000000000000000000000..6b3e592d984ce4007c2bfb1bbf6bc0aafde04aa0
--- /dev/null
+++ b/app/code/Magento/Payment/Gateway/ErrorMapper/NullMappingData.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Payment\Gateway\ErrorMapper;
+
+use Magento\Framework\Config\DataInterface;
+
+/**
+ * Stub implementation of DataInterface which is used by default for ErrorMessageMapper, because
+ * each payment method should provide own mapping data source.
+ */
+class NullMappingData implements DataInterface
+{
+    /**
+     * @inheritdoc
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function get($path = null, $default = null)
+    {
+        return null;
+    }
+
+    /**
+     * @inheritdoc
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function merge(array $config)
+    {
+    }
+}
diff --git a/app/code/Magento/Payment/Gateway/ErrorMapper/XmlToArrayConverter.php b/app/code/Magento/Payment/Gateway/ErrorMapper/XmlToArrayConverter.php
new file mode 100644
index 0000000000000000000000000000000000000000..590a114e2222167911fcf32e5e97d52eff413652
--- /dev/null
+++ b/app/code/Magento/Payment/Gateway/ErrorMapper/XmlToArrayConverter.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Payment\Gateway\ErrorMapper;
+
+use Magento\Framework\Config\ConverterInterface;
+
+/**
+ * Reads xml in `<message code="code">message</message>` format and converts it to [code => message] array format.
+ */
+class XmlToArrayConverter implements ConverterInterface
+{
+    /**
+     * @inheritdoc
+     */
+    public function convert($source)
+    {
+        $result = [];
+        $messageList = $source->getElementsByTagName('message');
+        foreach ($messageList as $messageNode) {
+            $result[(string) $messageNode->getAttribute('code')] = (string) $messageNode->nodeValue;
+        }
+        return $result;
+    }
+}
diff --git a/app/code/Magento/Payment/Test/Unit/Gateway/Command/GatewayCommandTest.php b/app/code/Magento/Payment/Test/Unit/Gateway/Command/GatewayCommandTest.php
index df8bdc9bca54be6bef9758e8c25ff5597ea039cf..d17a7f302f31b098ad06db77518501a806122b4a 100644
--- a/app/code/Magento/Payment/Test/Unit/Gateway/Command/GatewayCommandTest.php
+++ b/app/code/Magento/Payment/Test/Unit/Gateway/Command/GatewayCommandTest.php
@@ -6,11 +6,15 @@
 namespace Magento\Payment\Test\Unit\Gateway\Command;
 
 use Magento\Payment\Gateway\Command\GatewayCommand;
+use Magento\Payment\Gateway\ErrorMapper\ErrorMessageMapperInterface;
 use Magento\Payment\Gateway\Http\ClientInterface;
 use Magento\Payment\Gateway\Http\TransferFactoryInterface;
+use Magento\Payment\Gateway\Http\TransferInterface;
 use Magento\Payment\Gateway\Request\BuilderInterface;
 use Magento\Payment\Gateway\Response\HandlerInterface;
+use Magento\Payment\Gateway\Validator\ResultInterface;
 use Magento\Payment\Gateway\Validator\ValidatorInterface;
+use PHPUnit_Framework_MockObject_MockObject as MockObject;
 use Psr\Log\LoggerInterface;
 
 /**
@@ -18,175 +22,176 @@ use Psr\Log\LoggerInterface;
  */
 class GatewayCommandTest extends \PHPUnit\Framework\TestCase
 {
-    /** @var GatewayCommand */
-    protected $command;
+    /**
+     * @var GatewayCommand
+     */
+    private $command;
 
     /**
-     * @var BuilderInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var BuilderInterface|MockObject
      */
-    protected $requestBuilderMock;
+    private $requestBuilder;
 
     /**
-     * @var TransferFactoryInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var TransferFactoryInterface|MockObject
      */
-    protected $transferFactoryMock;
+    private $transferFactory;
 
     /**
-     * @var ClientInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var ClientInterface|MockObject
      */
-    protected $clientMock;
+    private $client;
 
     /**
-     * @var HandlerInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var HandlerInterface|MockObject
      */
-    protected $responseHandlerMock;
+    private $responseHandler;
 
     /**
-     * @var ValidatorInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var ValidatorInterface|MockObject
      */
-    protected $validatorMock;
+    private $validator;
 
     /**
-     * @var LoggerInterface |\PHPUnit_Framework_MockObject_MockObject
+     * @var LoggerInterface|MockObject
      */
     private $logger;
 
+    /**
+     * @var ErrorMessageMapperInterface|MockObject
+     */
+    private $errorMessageMapper;
+
     protected function setUp()
     {
-        $this->requestBuilderMock = $this->createMock(
-            BuilderInterface::class
-        );
-        $this->transferFactoryMock = $this->createMock(
-            TransferFactoryInterface::class
-        );
-        $this->clientMock = $this->createMock(
-            ClientInterface::class
-        );
-        $this->responseHandlerMock = $this->createMock(
-            HandlerInterface::class
-        );
-        $this->validatorMock = $this->createMock(
-            ValidatorInterface::class
-        );
+        $this->requestBuilder = $this->createMock(BuilderInterface::class);
+        $this->transferFactory = $this->createMock(TransferFactoryInterface::class);
+        $this->client = $this->createMock(ClientInterface::class);
+        $this->responseHandler = $this->createMock(HandlerInterface::class);
+        $this->validator = $this->createMock(ValidatorInterface::class);
         $this->logger = $this->createMock(LoggerInterface::class);
+        $this->errorMessageMapper = $this->createMock(ErrorMessageMapperInterface::class);
 
         $this->command = new GatewayCommand(
-            $this->requestBuilderMock,
-            $this->transferFactoryMock,
-            $this->clientMock,
+            $this->requestBuilder,
+            $this->transferFactory,
+            $this->client,
             $this->logger,
-            $this->responseHandlerMock,
-            $this->validatorMock
+            $this->responseHandler,
+            $this->validator,
+            $this->errorMessageMapper
         );
     }
 
     public function testExecute()
     {
         $commandSubject = ['authorize'];
-        $request = [
-            'request_field1' => 'request_value1',
-            'request_field2' => 'request_value2'
-        ];
-        $response = ['response_field1' => 'response_value1'];
-        $validationResult = $this->getMockBuilder(
-            \Magento\Payment\Gateway\Validator\ResultInterface::class
-        )
-            ->getMockForAbstractClass();
+        $this->processRequest($commandSubject, true);
 
-        $transferO = $this->getMockBuilder(
-            \Magento\Payment\Gateway\Http\TransferInterface::class
-        )
-            ->getMockForAbstractClass();
+        $this->responseHandler->method('handle')
+            ->with($commandSubject, ['response_field1' => 'response_value1']);
 
-        $this->requestBuilderMock->expects(static::once())
-            ->method('build')
-            ->with($commandSubject)
-            ->willReturn($request);
+        $this->command->execute($commandSubject);
+    }
 
-        $this->transferFactoryMock->expects(static::once())
-            ->method('create')
-            ->with($request)
-            ->willReturn($transferO);
+    /**
+     * Checks a case when request fails.
+     *
+     * @expectedException \Magento\Payment\Gateway\Command\CommandException
+     * @expectedExceptionMessage Transaction has been declined. Please try again later.
+     */
+    public function testExecuteValidationFail()
+    {
+        $commandSubject = ['authorize'];
+        $validationFailures = [
+            __('Failure #1'),
+            __('Failure #2'),
+        ];
 
-        $this->clientMock->expects(static::once())
-            ->method('placeRequest')
-            ->with($transferO)
-            ->willReturn($response);
-        $this->validatorMock->expects(static::once())
-            ->method('validate')
-            ->with(array_merge($commandSubject, ['response' =>$response]))
-            ->willReturn($validationResult);
-        $validationResult->expects(static::once())
-            ->method('isValid')
-            ->willReturn(true);
+        $this->processRequest($commandSubject, false, $validationFailures);
 
-        $this->responseHandlerMock->expects(static::once())
-            ->method('handle')
-            ->with($commandSubject, $response);
+        $this->logger->expects(self::exactly(count($validationFailures)))
+            ->method('critical')
+            ->withConsecutive(
+                [self::equalTo('Payment Error: ' . $validationFailures[0])],
+                [self::equalTo('Payment Error: ' . $validationFailures[1])]
+            );
 
         $this->command->execute($commandSubject);
     }
 
-    public function testExecuteValidationFail()
+    /**
+     * Checks a case when request fails and response errors are mapped.
+     *
+     * @expectedException \Magento\Payment\Gateway\Command\CommandException
+     * @expectedExceptionMessage Failure Mapped
+     */
+    public function testExecuteValidationFailWithMappedErrors()
     {
-        $this->expectException(
-            \Magento\Payment\Gateway\Command\CommandException::class
-        );
-
         $commandSubject = ['authorize'];
-        $request = [
-            'request_field1' => 'request_value1',
-            'request_field2' => 'request_value2'
-        ];
-        $response = ['response_field1' => 'response_value1'];
         $validationFailures = [
             __('Failure #1'),
             __('Failure #2'),
         ];
-        $validationResult = $this->getMockBuilder(
-            \Magento\Payment\Gateway\Validator\ResultInterface::class
-        )
-            ->getMockForAbstractClass();
 
-        $transferO = $this->getMockBuilder(
-            \Magento\Payment\Gateway\Http\TransferInterface::class
-        )
+        $this->processRequest($commandSubject, false, $validationFailures);
+
+        $this->errorMessageMapper->method('getMessage')
+            ->willReturnMap(
+                [
+                    ['Failure #1', 'Failure Mapped'],
+                    ['Failure #2', null]
+                ]
+            );
+
+        $this->logger->expects(self::exactly(count($validationFailures)))
+            ->method('critical')
+            ->withConsecutive(
+                [self::equalTo('Payment Error: Failure Mapped')],
+                [self::equalTo('Payment Error: Failure #2')]
+            );
+
+        $this->command->execute($commandSubject);
+    }
+
+    /**
+     * Performs command actions like request, response and validation.
+     *
+     * @param array $commandSubject
+     * @param bool $validationResult
+     * @param array $validationFailures
+     */
+    private function processRequest(array $commandSubject, bool $validationResult, array $validationFailures = [])
+    {
+        $request = [
+            'request_field1' => 'request_value1',
+            'request_field2' => 'request_value2'
+        ];
+        $response = ['response_field1' => 'response_value1'];
+        $transferO = $this->getMockBuilder(TransferInterface::class)
             ->getMockForAbstractClass();
 
-        $this->requestBuilderMock->expects(static::once())
-            ->method('build')
+        $this->requestBuilder->method('build')
             ->with($commandSubject)
             ->willReturn($request);
 
-        $this->transferFactoryMock->expects(static::once())
-            ->method('create')
+        $this->transferFactory->method('create')
             ->with($request)
             ->willReturn($transferO);
 
-        $this->clientMock->expects(static::once())
-            ->method('placeRequest')
+        $this->client->method('placeRequest')
             ->with($transferO)
             ->willReturn($response);
-        $this->validatorMock->expects(static::once())
-            ->method('validate')
-            ->with(array_merge($commandSubject, ['response' =>$response]))
-            ->willReturn($validationResult);
-        $validationResult->expects(static::once())
-            ->method('isValid')
-            ->willReturn(false);
-        $validationResult->expects(static::once())
-            ->method('getFailsDescription')
-            ->willReturn(
-                $validationFailures
-            );
 
-        $this->logger->expects(static::exactly(count($validationFailures)))
-            ->method('critical')
-            ->withConsecutive(
-                [$validationFailures[0]],
-                [$validationFailures[1]]
-            );
+        $result = $this->getMockBuilder(ResultInterface::class)
+            ->getMockForAbstractClass();
 
-        $this->command->execute($commandSubject);
+        $this->validator->method('validate')
+            ->with(array_merge($commandSubject, ['response' => $response]))
+            ->willReturn($result);
+        $result->method('isValid')
+            ->willReturn($validationResult);
+        $result->method('getFailsDescription')
+            ->willReturn($validationFailures);
     }
 }
diff --git a/app/code/Magento/Payment/Test/Unit/Model/Method/FactoryTest.php b/app/code/Magento/Payment/Test/Unit/Model/Method/FactoryTest.php
deleted file mode 100644
index f0cb19ef0fa0f27343a282e3cbc405e44696e19f..0000000000000000000000000000000000000000
--- a/app/code/Magento/Payment/Test/Unit/Model/Method/FactoryTest.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Payment\Test\Unit\Model\Method;
-
-class FactoryTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @var \Magento\Framework\ObjectManagerInterface|PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $_objectManagerMock;
-
-    /**
-     * @var \Magento\Payment\Model\Method\Factory
-     */
-    protected $_factory;
-
-    protected function setUp()
-    {
-        $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
-
-        $this->_objectManagerMock = $this->createMock(\Magento\Framework\ObjectManagerInterface::class);
-        $this->_factory = $objectManagerHelper->getObject(
-            \Magento\Payment\Model\Method\Factory::class,
-            ['objectManager' => $this->_objectManagerMock]
-        );
-    }
-
-    public function testCreateMethod()
-    {
-        $className = \Magento\Payment\Model\Method\AbstractMethod::class;
-        $methodMock = $this->createMock($className);
-        $this->_objectManagerMock->expects(
-            $this->once()
-        )->method(
-            'create'
-        )->with(
-            $className,
-            []
-        )->will(
-            $this->returnValue($methodMock)
-        );
-
-        $this->assertEquals($methodMock, $this->_factory->create($className));
-    }
-
-    public function testCreateMethodWithArguments()
-    {
-        $className = \Magento\Payment\Model\Method\AbstractMethod::class;
-        $data = ['param1', 'param2'];
-        $methodMock = $this->createMock($className);
-        $this->_objectManagerMock->expects(
-            $this->once()
-        )->method(
-            'create'
-        )->with(
-            $className,
-            $data
-        )->will(
-            $this->returnValue($methodMock)
-        );
-
-        $this->assertEquals($methodMock, $this->_factory->create($className, $data));
-    }
-
-    /**
-     * @expectedException \Magento\Framework\Exception\LocalizedException
-     * @expectedExceptionMessage WrongClass class doesn't implement \Magento\Payment\Model\MethodInterface
-     */
-    public function testWrongTypeException()
-    {
-        $className = 'WrongClass';
-        $methodMock = $this->createMock($className);
-        $this->_objectManagerMock->expects(
-            $this->once()
-        )->method(
-            'create'
-        )->with(
-            $className,
-            []
-        )->will(
-            $this->returnValue($methodMock)
-        );
-
-        $this->_factory->create($className);
-    }
-}
diff --git a/app/code/Magento/Payment/Test/Unit/Model/Method/Specification/FactoryTest.php b/app/code/Magento/Payment/Test/Unit/Model/Method/Specification/FactoryTest.php
deleted file mode 100644
index 9bdc90829f6feb92a22f1458a88d046b9a18cc2e..0000000000000000000000000000000000000000
--- a/app/code/Magento/Payment/Test/Unit/Model/Method/Specification/FactoryTest.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Payment\Test\Unit\Model\Method\Specification;
-
-/**
- * Factory Test
- */
-class FactoryTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $objectManagerMock;
-
-    /**
-     * @var \Magento\Payment\Model\Method\Specification\Factory
-     */
-    protected $factory;
-
-    protected function setUp()
-    {
-        $this->objectManagerMock = $this->createMock(\Magento\Framework\ObjectManagerInterface::class);
-
-        $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
-        $this->factory = $objectManagerHelper->getObject(
-            \Magento\Payment\Model\Method\Specification\Factory::class,
-            ['objectManager' => $this->objectManagerMock]
-        );
-    }
-
-    public function testCreateMethod()
-    {
-        $className = \Magento\Payment\Model\Method\SpecificationInterface::class;
-        $methodMock = $this->createMock($className);
-        $this->objectManagerMock->expects(
-            $this->once()
-        )->method(
-            'get'
-        )->with(
-            $className
-        )->will(
-            $this->returnValue($methodMock)
-        );
-
-        $this->assertEquals($methodMock, $this->factory->create($className));
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Specification must implement SpecificationInterface
-     */
-    public function testWrongTypeException()
-    {
-        $className = 'WrongClass';
-        $methodMock = $this->createMock($className);
-        $this->objectManagerMock->expects(
-            $this->once()
-        )->method(
-            'get'
-        )->with(
-            $className
-        )->will(
-            $this->returnValue($methodMock)
-        );
-
-        $this->factory->create($className);
-    }
-}
diff --git a/app/code/Magento/Payment/etc/di.xml b/app/code/Magento/Payment/etc/di.xml
index e2de2244bff89b3215f45c37da13860085c3b014..e62c5e1c1cd4d3de0ed439a62474590866a50de9 100644
--- a/app/code/Magento/Payment/etc/di.xml
+++ b/app/code/Magento/Payment/etc/di.xml
@@ -12,6 +12,7 @@
     <preference for="Magento\Payment\Gateway\ConfigFactoryInterface" type="Magento\Payment\Gateway\Config\ConfigFactory" />
     <preference for="Magento\Payment\Gateway\Command\CommandManagerPoolInterface" type="Magento\Payment\Gateway\Command\CommandManagerPool" />
     <preference for="Magento\Payment\Gateway\Data\PaymentDataObjectFactoryInterface" type="Magento\Payment\Gateway\Data\PaymentDataObjectFactory" />
+    <preference for="Magento\Payment\Gateway\ErrorMapper\ErrorMessageMapperInterface" type="Magento\Payment\Gateway\ErrorMapper\ErrorMessageMapper" />
 
     <type name="Magento\Payment\Model\Config\Reader">
         <arguments>
@@ -36,4 +37,29 @@
             <argument name="config" xsi:type="object">Magento\Payment\Gateway\Config\Config</argument>
         </arguments>
     </type>
+
+    <virtualType name="Magento\Payment\Gateway\ErrorMapper\VirtualSchemaLocator" type="Magento\Framework\Config\GenericSchemaLocator">
+        <arguments>
+            <argument name="moduleName" xsi:type="string">Magento_Payment</argument>
+            <argument name="schema" xsi:type="string">error_mapping.xsd</argument>
+        </arguments>
+    </virtualType>
+    <virtualType name="Magento\Payment\Gateway\ErrorMapper\VirtualConfigReader" type="Magento\Framework\Config\Reader\Filesystem">
+        <arguments>
+            <argument name="converter" xsi:type="object">Magento\Payment\Gateway\ErrorMapper\XmlToArrayConverter</argument>
+            <argument name="schemaLocator" xsi:type="object">Magento\Payment\Gateway\ErrorMapper\VirtualSchemaLocator</argument>
+            <argument name="fileName" xsi:type="string">error_mapping.xml</argument>
+        </arguments>
+    </virtualType>
+    <type name="Magento\Payment\Gateway\ErrorMapper\MappingData">
+        <arguments>
+            <argument name="reader" xsi:type="object">Magento\Payment\Gateway\ErrorMapper\VirtualConfigReader</argument>
+            <argument name="cacheId" xsi:type="string">payment_error_mapper</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Payment\Gateway\ErrorMapper\ErrorMessageMapper">
+        <arguments>
+            <argument name="messageMapping" xsi:type="object">Magento\Payment\Gateway\ErrorMapper\NullMappingData</argument>
+        </arguments>
+    </type>
 </config>
diff --git a/app/code/Magento/Payment/etc/error_mapping.xsd b/app/code/Magento/Payment/etc/error_mapping.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..97f3c181beb37abf7c11d11657a4e63ce012c61c
--- /dev/null
+++ b/app/code/Magento/Payment/etc/error_mapping.xsd
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <xs:element name="mapping">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="1" maxOccurs="1" name="message_list" type="message_list" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:complexType name="message_list">
+        <xs:sequence>
+            <xs:element minOccurs="0" maxOccurs="unbounded" name="message" type="message" />
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="message">
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:attribute name="code" type="xs:string" use="required" />
+                <xs:attribute name="translate" type="xs:boolean" use="optional" />
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+</xs:schema>
diff --git a/app/code/Magento/Paypal/Model/Express.php b/app/code/Magento/Paypal/Model/Express.php
index 8ba8adcede511745f53fa94bbc4632920e37f529..accb22b265335de00797e66a36252537eb902628 100644
--- a/app/code/Magento/Paypal/Model/Express.php
+++ b/app/code/Magento/Paypal/Model/Express.php
@@ -669,7 +669,7 @@ class Express extends \Magento\Payment\Model\Method\AbstractMethod
     public function assignData(\Magento\Framework\DataObject $data)
     {
         parent::assignData($data);
-        
+
         $additionalData = $data->getData(PaymentInterface::KEY_ADDITIONAL_DATA);
 
         if (!is_array($additionalData)) {
@@ -677,6 +677,11 @@ class Express extends \Magento\Payment\Model\Method\AbstractMethod
         }
 
         foreach ($additionalData as $key => $value) {
+            // Skip extension attributes
+            if ($key === \Magento\Framework\Api\ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY) {
+                continue;
+            }
+
             $this->getInfoInstance()->setAdditionalInformation($key, $value);
         }
         return $this;
diff --git a/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php b/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php
index 6a2d33d010190fd0d659d28a447753c3761e94b3..1b8c33622e784154908d6df12b3f6592f33ca68a 100644
--- a/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php
+++ b/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php
@@ -161,12 +161,21 @@ class ExpressTest extends \PHPUnit\Framework\TestCase
     {
         $transportValue = 'something';
 
+        $extensionAttribute = $this->getMockForAbstractClass(
+            \Magento\Quote\Api\Data\PaymentExtensionInterface::class,
+            [],
+            '',
+            false,
+            false
+        );
+
         $data = new DataObject(
             [
                 PaymentInterface::KEY_ADDITIONAL_DATA => [
                     Express\Checkout::PAYMENT_INFO_TRANSPORT_BILLING_AGREEMENT => $transportValue,
                     Express\Checkout::PAYMENT_INFO_TRANSPORT_PAYER_ID => $transportValue,
-                    Express\Checkout::PAYMENT_INFO_TRANSPORT_TOKEN => $transportValue
+                    Express\Checkout::PAYMENT_INFO_TRANSPORT_TOKEN => $transportValue,
+                    \Magento\Framework\Api\ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY => $extensionAttribute
                 ]
             ]
         );
diff --git a/app/code/Magento/Paypal/view/frontend/web/js/action/set-payment-method.js b/app/code/Magento/Paypal/view/frontend/web/js/action/set-payment-method.js
index a994f9defd583823f6da37557f675f94eee13cbd..63e34437c6f90c6b663b3eaf0bd1da306ffec3d3 100644
--- a/app/code/Magento/Paypal/view/frontend/web/js/action/set-payment-method.js
+++ b/app/code/Magento/Paypal/view/frontend/web/js/action/set-payment-method.js
@@ -4,48 +4,12 @@
  */
 
 define([
-    'jquery',
     'Magento_Checkout/js/model/quote',
-    'Magento_Checkout/js/model/url-builder',
-    'mage/storage',
-    'Magento_Checkout/js/model/error-processor',
-    'Magento_Customer/js/model/customer',
-    'Magento_Checkout/js/model/full-screen-loader'
-], function ($, quote, urlBuilder, storage, errorProcessor, customer, fullScreenLoader) {
+    'Magento_Checkout/js/action/set-payment-information'
+], function (quote, setPaymentInformation) {
     'use strict';
 
     return function (messageContainer) {
-        var serviceUrl,
-            payload,
-            paymentData = quote.paymentMethod();
-
-        /**
-         * Checkout for guest and registered customer.
-         */
-        if (!customer.isLoggedIn()) {
-            serviceUrl = urlBuilder.createUrl('/guest-carts/:cartId/set-payment-information', {
-                cartId: quote.getQuoteId()
-            });
-            payload = {
-                cartId: quote.getQuoteId(),
-                email: quote.guestEmail,
-                paymentMethod: paymentData
-            };
-        } else {
-            serviceUrl = urlBuilder.createUrl('/carts/mine/set-payment-information', {});
-            payload = {
-                cartId: quote.getQuoteId(),
-                paymentMethod: paymentData
-            };
-        }
-        fullScreenLoader.startLoader();
-
-        return storage.post(
-            serviceUrl, JSON.stringify(payload)
-        ).fail(function (response) {
-            errorProcessor.process(response, messageContainer);
-        }).always(function () {
-            fullScreenLoader.stopLoader();
-        });
+        return setPaymentInformation(messageContainer, quote.paymentMethod());
     };
 });
diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Save.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Save.php
index 63c266150384ae4703724df39ec20e64054a8e6b..c45a1982784e17696b595f0d15102f068fc01a00 100644
--- a/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Save.php
+++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/Invoice/Save.php
@@ -191,14 +191,7 @@ class Save extends \Magento\Backend\App\Action
             }
             $transactionSave->save();
 
-            if (isset($shippingResponse) && $shippingResponse->hasErrors()) {
-                $this->messageManager->addError(
-                    __(
-                        'The invoice and the shipment  have been created. ' .
-                        'The shipping label cannot be created now.'
-                    )
-                );
-            } elseif (!empty($data['do_shipment'])) {
+            if (!empty($data['do_shipment'])) {
                 $this->messageManager->addSuccess(__('You created the invoice and shipment.'));
             } else {
                 $this->messageManager->addSuccess(__('The invoice has been created.'));
diff --git a/app/code/Magento/Sales/Model/Order/Pdf/AbstractPdf.php b/app/code/Magento/Sales/Model/Order/Pdf/AbstractPdf.php
index 850e9cf08413bc795ee6759335c16963f63e63c7..1a25ff7bfdb80ffd079669adcdb3ea421e9ee6b1 100644
--- a/app/code/Magento/Sales/Model/Order/Pdf/AbstractPdf.php
+++ b/app/code/Magento/Sales/Model/Order/Pdf/AbstractPdf.php
@@ -953,7 +953,7 @@ abstract class AbstractPdf extends \Magento\Framework\DataObject
      * feed         int; x position (required)
      * font         string; font style, optional: bold, italic, regular
      * font_file    string; path to font file (optional for use your custom font)
-     * font_size    int; font size (default 7)
+     * font_size    int; font size (default 10)
      * align        string; text align (also see feed parametr), optional left, right
      * height       int;line spacing (default 10)
      *
@@ -1005,24 +1005,8 @@ abstract class AbstractPdf extends \Magento\Framework\DataObject
             foreach ($lines as $line) {
                 $maxHeight = 0;
                 foreach ($line as $column) {
-                    $fontSize = empty($column['font_size']) ? 10 : $column['font_size'];
-                    if (!empty($column['font_file'])) {
-                        $font = \Zend_Pdf_Font::fontWithPath($column['font_file']);
-                        $page->setFont($font, $fontSize);
-                    } else {
-                        $fontStyle = empty($column['font']) ? 'regular' : $column['font'];
-                        switch ($fontStyle) {
-                            case 'bold':
-                                $font = $this->_setFontBold($page, $fontSize);
-                                break;
-                            case 'italic':
-                                $font = $this->_setFontItalic($page, $fontSize);
-                                break;
-                            default:
-                                $font = $this->_setFontRegular($page, $fontSize);
-                                break;
-                        }
-                    }
+                    $font = $this->setFont($page, $column);
+                    $fontSize = $column['font_size'];
 
                     if (!is_array($column['text'])) {
                         $column['text'] = [$column['text']];
@@ -1033,6 +1017,8 @@ abstract class AbstractPdf extends \Magento\Framework\DataObject
                     foreach ($column['text'] as $part) {
                         if ($this->y - $lineSpacing < 15) {
                             $page = $this->newPage($pageSettings);
+                            $font = $this->setFont($page, $column);
+                            $fontSize = $column['font_size'];
                         }
 
                         $feed = $column['feed'];
@@ -1066,4 +1052,42 @@ abstract class AbstractPdf extends \Magento\Framework\DataObject
 
         return $page;
     }
+
+    /**
+     * Set page font.
+     * 
+     * column array format
+     * font         string; font style, optional: bold, italic, regular
+     * font_file    string; path to font file (optional for use your custom font)
+     * font_size    int; font size (default 10)
+     * 
+     * @param \Zend_Pdf_Page $page
+     * @param array $column
+     * @return \Zend_Pdf_Resource_Font
+     * @throws \Zend_Pdf_Exception
+     */
+    private function setFont($page, &$column)
+    {
+        $fontSize = empty($column['font_size']) ? 10 : $column['font_size'];
+        $column['font_size'] = $fontSize;
+        if (!empty($column['font_file'])) {
+            $font = \Zend_Pdf_Font::fontWithPath($column['font_file']);
+            $page->setFont($font, $fontSize);
+        } else {
+            $fontStyle = empty($column['font']) ? 'regular' : $column['font'];
+            switch ($fontStyle) {
+                case 'bold':
+                    $font = $this->_setFontBold($page, $fontSize);
+                    break;
+                case 'italic':
+                    $font = $this->_setFontItalic($page, $fontSize);
+                    break;
+                default:
+                    $font = $this->_setFontRegular($page, $fontSize);
+                    break;
+            }
+        }
+
+        return $font;
+    }
 }
diff --git a/app/code/Magento/Sales/i18n/en_US.csv b/app/code/Magento/Sales/i18n/en_US.csv
index 65682843002255d8b6a1078280896fba632dc644..a32f3cacce7564a8cc3bf40db65e84136757951a 100644
--- a/app/code/Magento/Sales/i18n/en_US.csv
+++ b/app/code/Magento/Sales/i18n/en_US.csv
@@ -233,7 +233,6 @@ Sales,Sales
 "You can't create an invoice without products.","You can't create an invoice without products."
 "New Invoice","New Invoice"
 "We can't save the invoice right now.","We can't save the invoice right now."
-"The invoice and the shipment  have been created. The shipping label cannot be created now.","The invoice and the shipment  have been created. The shipping label cannot be created now."
 "You created the invoice and shipment.","You created the invoice and shipment."
 "The invoice has been created.","The invoice has been created."
 "We can't send the invoice email right now.","We can't send the invoice email right now."
diff --git a/app/code/Magento/Shipping/Helper/Data.php b/app/code/Magento/Shipping/Helper/Data.php
index 78e23cb4aeac266b753c44a3838dacd2d017a168..dd0933b5a340e80a2727a208c66c32304cf09ead 100644
--- a/app/code/Magento/Shipping/Helper/Data.php
+++ b/app/code/Magento/Shipping/Helper/Data.php
@@ -11,6 +11,10 @@
  */
 namespace Magento\Shipping\Helper;
 
+use Magento\Framework\App\ObjectManager;
+use Magento\Framework\UrlInterface;
+use Magento\Store\Model\StoreManagerInterface;
+
 class Data extends \Magento\Framework\App\Helper\AbstractHelper
 {
     /**
@@ -21,19 +25,28 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
     protected $_allowedHashKeys = ['ship_id', 'order_id', 'track_id'];
 
     /**
-     * @var \Magento\Store\Model\StoreManagerInterface
+     * @var StoreManagerInterface
      */
     protected $_storeManager;
 
+    /**
+     * @var UrlInterface|null
+     */
+    private $url;
+
     /**
      * @param \Magento\Framework\App\Helper\Context $context
-     * @param \Magento\Store\Model\StoreManagerInterface $storeManager
+     * @param StoreManagerInterface $storeManager
+     * @param UrlInterface|null $url
      */
     public function __construct(
         \Magento\Framework\App\Helper\Context $context,
-        \Magento\Store\Model\StoreManagerInterface $storeManager
+        StoreManagerInterface $storeManager,
+        UrlInterface $url = null
     ) {
         $this->_storeManager = $storeManager;
+        $this->url = $url ?: ObjectManager::getInstance()->get(UrlInterface::class);
+
         parent::__construct($context);
     }
 
@@ -64,12 +77,13 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
     {
         $urlPart = "{$key}:{$model->{$method}()}:{$model->getProtectCode()}";
         $params = [
+            '_scope' => $model->getStoreId(),
+            '_nosid' => true,
             '_direct' => 'shipping/tracking/popup',
             '_query' => ['hash' => $this->urlEncoder->encode($urlPart)]
         ];
 
-        $storeModel = $this->_storeManager->getStore($model->getStoreId());
-        return $storeModel->getUrl('', $params);
+        return $this->url->getUrl('', $params);
     }
 
     /**
diff --git a/app/code/Magento/Shipping/etc/adminhtml/di.xml b/app/code/Magento/Shipping/etc/adminhtml/di.xml
index 54d5d9664e66f7ec06032e8c847f29336138adf9..36bd1ae9d35055444b9196ad2a6a788a04f87193 100644
--- a/app/code/Magento/Shipping/etc/adminhtml/di.xml
+++ b/app/code/Magento/Shipping/etc/adminhtml/di.xml
@@ -7,4 +7,11 @@
 -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
     <preference for="Magento\Shipping\Model\Shipping" type="Magento\Shipping\Model\Shipping\Labels" />
+
+    <type name="Magento\Shipping\Helper\Data">
+        <arguments>
+            <!-- Use frontend URL model-->
+            <argument name="url" xsi:type="object">Magento\Framework\Url</argument>
+        </arguments>
+    </type>
 </config>
diff --git a/app/code/Magento/Swatches/view/adminhtml/ui_component/product_attribute_add_form.xml b/app/code/Magento/Swatches/view/adminhtml/ui_component/product_attribute_add_form.xml
index 4152c06fa3ddc5d153f93da6b9c2c6c278b8152c..2fdf5f3cd0ea92b56d7cf4413c59d72fc9b29425 100644
--- a/app/code/Magento/Swatches/view/adminhtml/ui_component/product_attribute_add_form.xml
+++ b/app/code/Magento/Swatches/view/adminhtml/ui_component/product_attribute_add_form.xml
@@ -87,7 +87,6 @@
                 <additionalClasses>
                     <class name="admin__field-wide">true</class>
                 </additionalClasses>
-                <dataScope>text_swatch</dataScope>
                 <componentType>dynamicRows</componentType>
             </settings>
             <container name="record" component="Magento_Ui/js/dynamic-rows/record">
@@ -96,8 +95,6 @@
                         <item name="isTemplate" xsi:type="boolean">true</item>
                         <item name="is_collection" xsi:type="boolean">true</item>
                         <item name="componentType" xsi:type="string">container</item>
-                        <item name="positionProvider" xsi:type="string">text_swatch.position</item>
-                        <item name="dataScope" xsi:type="string"/>
                     </item>
                 </argument>
                 <field name="defaulttext" component="Magento_Catalog/js/form/element/checkbox" sortOrder="0" formElement="checkbox">
@@ -183,15 +180,11 @@
                         </item>
                     </argument>
                     <settings>
-                        <additionalClasses>
-                            <class name="_hidden">true</class>
-                        </additionalClasses>
                         <dataType>text</dataType>
                         <visible>false</visible>
-                        <dataScope>position</dataScope>
                     </settings>
                 </field>
-                <actionDelete name="action_delete" component="Magento_Catalog/js/form/element/action-delete" template="Magento_Catalog/form/element/action-delete">
+                <actionDelete name="action_delete">
                     <argument name="data" xsi:type="array">
                         <item name="config" xsi:type="array">
                             <item name="fit" xsi:type="boolean">true</item>
@@ -227,7 +220,6 @@
                     <class name="swatch-visual-options-container">true</class>
                     <class name="admin__field-wide">true</class>
                 </additionalClasses>
-                <dataScope>visual_swatch</dataScope>
                 <componentType>dynamicRows</componentType>
             </settings>
             <container name="record" component="Magento_Ui/js/dynamic-rows/record">
@@ -236,8 +228,6 @@
                         <item name="isTemplate" xsi:type="boolean">true</item>
                         <item name="is_collection" xsi:type="boolean">true</item>
                         <item name="componentType" xsi:type="string">container</item>
-                        <item name="positionProvider" xsi:type="string">text_swatch.position</item>
-                        <item name="dataScope" xsi:type="string"/>
                     </item>
                 </argument>
                 <field name="defaultvisual" component="Magento_Catalog/js/form/element/checkbox" sortOrder="0" formElement="checkbox">
@@ -276,7 +266,6 @@
                             <class name="swatches-visual-col">true</class>
                         </additionalClasses>
                         <label translate="true">Swatch</label>
-                        <dataScope>swatchvisual</dataScope>
                     </settings>
                 </field>
                 <field name="optionvisual_default_store_view" component="Magento_Catalog/js/form/element/input" template="Magento_Catalog/form/element/input" formElement="input">
@@ -290,7 +279,6 @@
                     <settings>
                         <dataType>text</dataType>
                         <label translate="true">Default Store View</label>
-                        <dataScope>optionvisual_default_store_view</dataScope>
                     </settings>
                 </field>
                 <field name="optionvisual_admin" component="Magento_Catalog/js/form/element/input" template="Magento_Catalog/form/element/input" formElement="input">
@@ -304,7 +292,6 @@
                     <settings>
                         <dataType>text</dataType>
                         <label translate="true">Admin</label>
-                        <dataScope>optionvisual_admin</dataScope>
                     </settings>
                 </field>
                 <field name="position" component="Magento_Catalog/js/form/element/input" formElement="input">
@@ -315,15 +302,10 @@
                         </item>
                     </argument>
                     <settings>
-                        <additionalClasses>
-                            <class name="_hidden">true</class>
-                        </additionalClasses>
-                        <dataType>text</dataType>
-                        <visible>false</visible>
-                        <dataScope>position</dataScope>
+                         <visible>false</visible>
                     </settings>
                 </field>
-                <actionDelete name="action_delete" component="Magento_Catalog/js/form/element/action-delete" template="Magento_Catalog/form/element/action-delete">
+                <actionDelete name="action_delete">
                     <argument name="data" xsi:type="array">
                         <item name="config" xsi:type="array">
                             <item name="fit" xsi:type="boolean">true</item>
diff --git a/app/code/Magento/Swatches/view/adminhtml/web/js/form/element/swatch-visual.js b/app/code/Magento/Swatches/view/adminhtml/web/js/form/element/swatch-visual.js
index e63c9a2138a3627671343e11a02908b1d4799653..2fbce5aefbdebe34e025a71e4062cd2a22361140 100644
--- a/app/code/Magento/Swatches/view/adminhtml/web/js/form/element/swatch-visual.js
+++ b/app/code/Magento/Swatches/view/adminhtml/web/js/form/element/swatch-visual.js
@@ -305,18 +305,30 @@ define([
          */
         initialize: function () {
             this._super()
-                .initOldCode();
+                .initOldCode()
+                .on('value', this.onChangeColor.bind(this));
 
             return this;
         },
 
+        /**
+         * Handler function that execute when color changes.
+         *
+         * @param {String} data - color
+         */
+        onChangeColor: function (data) {
+            if (!data) {
+                jQuery('.' + this.elementName).parent().removeClass('unavailable');
+            }
+        },
+
         /**
          * Initialize wrapped former implementation.
          *
          * @returns {Object} Chainable.
          */
         initOldCode: function () {
-            jQuery.async('.' + this.elementName, function (elem) {
+            jQuery.async('.' + this.elementName, this.name, function (elem) {
                 oldCode(this.value(), elem.parentElement, this.uploadUrl, this.elementName);
             }.bind(this));
 
@@ -336,9 +348,15 @@ define([
             this.elementName = this.prefixElementName + recordId;
 
             this.inputName = prefixName + '[' + this.elementName + ']';
-            this.dataScope = 'data.' + this.prefixName + '.' + this.elementName;
+            this.exportDataLink = 'data.' + this.prefixName + '.' + this.elementName;
+            this.exports.value = this.provider + ':' + this.exportDataLink;
+        },
+
+        /** @inheritdoc */
+        destroy: function () {
+            this._super();
 
-            this.links.value = this.provider + ':' + this.dataScope;
+            this.source.remove(this.exportDataLink);
         },
 
         /**
diff --git a/app/code/Magento/Swatches/view/adminhtml/web/template/swatch-visual.html b/app/code/Magento/Swatches/view/adminhtml/web/template/swatch-visual.html
index 271cea918b7be2087d49e16161bb08e2f5a6c04f..8296e944a8ed3f7c2311c2eb75e4593545d0bc66 100644
--- a/app/code/Magento/Swatches/view/adminhtml/web/template/swatch-visual.html
+++ b/app/code/Magento/Swatches/view/adminhtml/web/template/swatch-visual.html
@@ -11,7 +11,7 @@
     },
     value: value
 "/>
-<div data-bind="attr: {class: 'swatch_window ' + elementName}"></div>
+<div attr="class: 'swatch_window ' + elementName" ko-style="backgroundColor: $data.value"></div>
 <div class="swatch_sub-menu_container">
     <div class="swatch_row position-relative">
         <div class="swatch_row_name colorpicker_handler">
diff --git a/app/code/Magento/Theme/view/frontend/templates/html/header.phtml b/app/code/Magento/Theme/view/frontend/templates/html/header.phtml
index cc3ea276e2230c3daa639ca0e0fecf49b4bdc13d..58548a0ba268a1916fe503ae4e3b6da1e1871590 100644
--- a/app/code/Magento/Theme/view/frontend/templates/html/header.phtml
+++ b/app/code/Magento/Theme/view/frontend/templates/html/header.phtml
@@ -15,7 +15,7 @@ $welcomeMessage = $block->getWelcome();
     case 'welcome': ?>
         <li class="greet welcome" data-bind="scope: 'customer'">
             <!-- ko if: customer().fullname  -->
-            <span data-bind="text: new String('<?= $block->escapeHtml(__('Welcome, %1!', '%1')) ?>').replace('%1', customer().firstname)">
+            <span data-bind="text: new String('<?= $block->escapeHtml(__('Welcome, %1!', '%1')) ?>').replace('%1', customer().fullname)">
             </span>
             <!-- /ko -->
             <!-- ko ifnot: customer().fullname  -->
diff --git a/app/code/Magento/Ui/Controller/Adminhtml/Index/Render.php b/app/code/Magento/Ui/Controller/Adminhtml/Index/Render.php
index d2ce1a58725a8928d28b6d91589de1f6469efc8b..6eb503a64cc3d8c3d22b8450c8453c686f953133 100644
--- a/app/code/Magento/Ui/Controller/Adminhtml/Index/Render.php
+++ b/app/code/Magento/Ui/Controller/Adminhtml/Index/Render.php
@@ -88,7 +88,7 @@ class Render extends AbstractAction
         } catch (\Exception $e) {
             $this->logger->critical($e);
             $result = [
-                'error' => _('UI component could not be rendered because of system exception'),
+                'error' => __('UI component could not be rendered because of system exception'),
                 'errorcode' => $this->escaper->escapeHtml($e->getCode())
             ];
             /** @var \Magento\Framework\Controller\Result\Json $resultJson */
diff --git a/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js b/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js
index 01fa03d1b4b67cb71427240a54af4b4e560cb73c..94a05e5fcde33efe26b2817d21fecfea403c21c6 100644
--- a/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js
+++ b/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js
@@ -224,6 +224,14 @@ define([
             return this;
         },
 
+        /** @inheritdoc */
+        destroy: function () {
+            if (this.dnd()) {
+                this.dnd().destroy();
+            }
+            this._super();
+        },
+
         /**
          * Calls 'initObservable' of parent
          *
diff --git a/app/code/Magento/Ui/view/base/web/js/lib/validation/rules.js b/app/code/Magento/Ui/view/base/web/js/lib/validation/rules.js
index 01a15755414088e21a010e08b8b5e5212d8d1a46..0ffd65c47d4cf67639992a976a00b1b59352ebd7 100644
--- a/app/code/Magento/Ui/view/base/web/js/lib/validation/rules.js
+++ b/app/code/Magento/Ui/view/base/web/js/lib/validation/rules.js
@@ -84,8 +84,10 @@ define([
         ],
         'range-words': [
             function (value, params) {
-                return utils.stripHtml(value).match(/\b\w+\b/g).length >= params[0] &&
-                    value.match(/bw+b/g).length < params[1];
+                var match = utils.stripHtml(value).match(/\b\w+\b/g) || [];
+
+                return match.length >= params[0] &&
+                    match.length <= params[1];
             },
             $.mage.__('Please enter between {0} and {1} words.')
         ],
diff --git a/app/code/Magento/Webapi/Controller/Rest/InputParamsResolver.php b/app/code/Magento/Webapi/Controller/Rest/InputParamsResolver.php
index 07d1b4e07fe9d702ce9b70262585a3eaa3200d28..fa89b7223a92e4c8883e95f6ccb91205c23d08f9 100644
--- a/app/code/Magento/Webapi/Controller/Rest/InputParamsResolver.php
+++ b/app/code/Magento/Webapi/Controller/Rest/InputParamsResolver.php
@@ -6,10 +6,10 @@
 
 namespace Magento\Webapi\Controller\Rest;
 
-use Magento\Framework\Webapi\ServiceInputProcessor;
 use Magento\Framework\Webapi\Rest\Request as RestRequest;
-use Magento\Webapi\Controller\Rest\Router;
+use Magento\Framework\Webapi\ServiceInputProcessor;
 use Magento\Webapi\Controller\Rest\Router\Route;
+use Magento\Webapi\Model\UrlDecoder;
 
 /**
  * This class is responsible for retrieving resolved input data
@@ -47,26 +47,32 @@ class InputParamsResolver
     private $requestValidator;
 
     /**
-     * Initialize dependencies
-     *
+     * @var UrlDecoder
+     */
+    private $urlDecoder;
+
+    /**
      * @param RestRequest $request
      * @param ParamsOverrider $paramsOverrider
      * @param ServiceInputProcessor $serviceInputProcessor
      * @param Router $router
      * @param RequestValidator $requestValidator
+     * @param UrlDecoder $urlDecoder
      */
     public function __construct(
         RestRequest $request,
         ParamsOverrider $paramsOverrider,
         ServiceInputProcessor $serviceInputProcessor,
         Router $router,
-        RequestValidator $requestValidator
+        RequestValidator $requestValidator,
+        UrlDecoder $urlDecoder = null
     ) {
         $this->request = $request;
         $this->paramsOverrider = $paramsOverrider;
         $this->serviceInputProcessor = $serviceInputProcessor;
         $this->router = $router;
         $this->requestValidator = $requestValidator;
+        $this->urlDecoder = $urlDecoder ?: \Magento\Framework\App\ObjectManager::getInstance()->get(UrlDecoder::class);
     }
 
     /**
@@ -97,6 +103,7 @@ class InputParamsResolver
             $inputData = $this->request->getRequestData();
         }
 
+        $inputData = $this->urlDecoder->decodeParams($inputData);
         $inputData = $this->paramsOverrider->override($inputData, $route->getParameters());
         $inputParams = $this->serviceInputProcessor->process($serviceClassName, $serviceMethodName, $inputData);
         return $inputParams;
diff --git a/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php b/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php
index 0e87805daf60ac96c1595967c1cd1fafa5347b5c..081b4c829475a19afbb31c05a9ebab9d7cd7bba8 100644
--- a/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php
+++ b/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php
@@ -17,6 +17,7 @@ use Magento\Framework\Webapi\Exception as WebapiException;
 use Magento\Webapi\Model\Soap\Config as SoapConfig;
 use Magento\Framework\Reflection\MethodsMap;
 use Magento\Webapi\Model\ServiceMetadata;
+use Magento\Webapi\Model\UrlDecoder;
 
 /**
  * Handler of requests to SOAP server.
@@ -70,8 +71,11 @@ class Handler
     protected $methodsMapProcessor;
 
     /**
-     * Initialize dependencies.
-     *
+     * @var UrlDecoder
+     */
+    private $urlDecoder;
+
+    /**
      * @param SoapRequest $request
      * @param \Magento\Framework\ObjectManagerInterface $objectManager
      * @param SoapConfig $apiConfig
@@ -80,6 +84,7 @@ class Handler
      * @param ServiceInputProcessor $serviceInputProcessor
      * @param DataObjectProcessor $dataObjectProcessor
      * @param MethodsMap $methodsMapProcessor
+     * @param UrlDecoder $urlDecoder
      */
     public function __construct(
         SoapRequest $request,
@@ -89,7 +94,8 @@ class Handler
         SimpleDataObjectConverter $dataObjectConverter,
         ServiceInputProcessor $serviceInputProcessor,
         DataObjectProcessor $dataObjectProcessor,
-        MethodsMap $methodsMapProcessor
+        MethodsMap $methodsMapProcessor,
+        UrlDecoder $urlDecoder = null
     ) {
         $this->_request = $request;
         $this->_objectManager = $objectManager;
@@ -99,6 +105,7 @@ class Handler
         $this->serviceInputProcessor = $serviceInputProcessor;
         $this->_dataObjectProcessor = $dataObjectProcessor;
         $this->methodsMapProcessor = $methodsMapProcessor;
+        $this->urlDecoder = $urlDecoder ?: \Magento\Framework\App\ObjectManager::getInstance()->get(UrlDecoder::class);
     }
 
     /**
@@ -150,6 +157,7 @@ class Handler
         /** SoapServer wraps parameters into array. Thus this wrapping should be removed to get access to parameters. */
         $arguments = reset($arguments);
         $arguments = $this->_dataObjectConverter->convertStdObjectToArray($arguments, true);
+        $arguments = $this->urlDecoder->decodeParams($arguments);
         return $this->serviceInputProcessor->process($serviceClass, $serviceMethod, $arguments);
     }
 
diff --git a/app/code/Magento/Webapi/Model/UrlDecoder.php b/app/code/Magento/Webapi/Model/UrlDecoder.php
new file mode 100644
index 0000000000000000000000000000000000000000..5a8ae37c607bfa169f1ce921dc12b05bdd488ece
--- /dev/null
+++ b/app/code/Magento/Webapi/Model/UrlDecoder.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Webapi\Model;
+
+/**
+ * Url decoder.
+ */
+class UrlDecoder
+{
+    /**
+     * Decode request params.
+     *
+     * @param array $params
+     *
+     * @return array
+     */
+    public function decodeParams(array $params)
+    {
+        foreach ($params as &$param) {
+            if (is_array($param)) {
+                $param = $this->decodeParams($param);
+            } else {
+                if ($param !== null && is_string($param)) {
+                    $param = rawurldecode($param);
+                }
+            }
+        }
+
+        return $params;
+    }
+}
diff --git a/app/code/Magento/Widget/Model/Widget/Instance.php b/app/code/Magento/Widget/Model/Widget/Instance.php
index 07a995e3f7734100c252e5df742c4b1f6e9178e7..f21609cb1ef5c5add6c2c579dd13e99a6fb973fc 100644
--- a/app/code/Magento/Widget/Model/Widget/Instance.php
+++ b/app/code/Magento/Widget/Model/Widget/Instance.php
@@ -34,7 +34,12 @@ class Instance extends \Magento\Framework\Model\AbstractModel
 
     const PRODUCT_LAYOUT_HANDLE = 'catalog_product_view';
 
-    const SINGLE_PRODUCT_LAYOUT_HANLDE = 'catalog_product_view_id_{{ID}}';
+    /**
+     * @deprecated see self::SINGLE_PRODUCT_LAYOUT_HANDLE
+     */
+    const SINGLE_PRODUCT_LAYOUT_HANLDE = self::SINGLE_PRODUCT_LAYOUT_HANDLE;
+    
+    const SINGLE_PRODUCT_LAYOUT_HANDLE = 'catalog_product_view_id_{{ID}}';
 
     const PRODUCT_TYPE_LAYOUT_HANDLE = 'catalog_product_view_type_{{TYPE}}';
 
@@ -188,12 +193,12 @@ class Instance extends \Magento\Framework\Model\AbstractModel
         $this->_specificEntitiesLayoutHandles = [
             'anchor_categories' => self::SINGLE_CATEGORY_LAYOUT_HANDLE,
             'notanchor_categories' => self::SINGLE_CATEGORY_LAYOUT_HANDLE,
-            'all_products' => self::SINGLE_PRODUCT_LAYOUT_HANLDE,
+            'all_products' => self::SINGLE_PRODUCT_LAYOUT_HANDLE,
         ];
         foreach (array_keys($this->_productType->getTypes()) as $typeId) {
             $layoutHandle = str_replace('{{TYPE}}', $typeId, self::PRODUCT_TYPE_LAYOUT_HANDLE);
             $this->_layoutHandles[$typeId . '_products'] = $layoutHandle;
-            $this->_specificEntitiesLayoutHandles[$typeId . '_products'] = self::SINGLE_PRODUCT_LAYOUT_HANLDE;
+            $this->_specificEntitiesLayoutHandles[$typeId . '_products'] = self::SINGLE_PRODUCT_LAYOUT_HANDLE;
         }
     }
 
diff --git a/app/code/Magento/Wishlist/CustomerData/Wishlist.php b/app/code/Magento/Wishlist/CustomerData/Wishlist.php
index a81b3d6537dfd204e8310470f9b8be077bac30c6..6933efc2aa5404127598aff85efdfddc44330112 100644
--- a/app/code/Magento/Wishlist/CustomerData/Wishlist.php
+++ b/app/code/Magento/Wishlist/CustomerData/Wishlist.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\Wishlist\CustomerData;
 
+use Magento\Catalog\Model\Product\Image\NotLoadInfoImageException;
 use Magento\Customer\CustomerData\SectionSourceInterface;
 
 /**
@@ -154,15 +155,19 @@ class Wishlist implements SectionSourceInterface
             ? 'Magento_Catalog/product/image'
             : 'Magento_Catalog/product/image_with_borders';
 
-        $imagesize = $helper->getResizedImageInfo();
+        try {
+            $imagesize = $helper->getResizedImageInfo();
+        } catch (NotLoadInfoImageException $exception) {
+            $imagesize = [$helper->getWidth(), $helper->getHeight()];
+        }
 
         $width = $helper->getFrame()
             ? $helper->getWidth()
-            : (!empty($imagesize[0]) ? $imagesize[0] : $helper->getWidth());
+            : $imagesize[0];
 
         $height = $helper->getFrame()
             ? $helper->getHeight()
-            : (!empty($imagesize[1]) ? $imagesize[1] : $helper->getHeight());
+            : $imagesize[1];
 
         return [
             'template' => $template,
diff --git a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/main/actions-bar/_store-switcher.less b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/main/actions-bar/_store-switcher.less
index 2ae0f3d2430bb87b4c47891dae8f0fdff569dbac..80bebb22a90434cfebd9ad46b0545536f03f8a1e 100644
--- a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/main/actions-bar/_store-switcher.less
+++ b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/main/actions-bar/_store-switcher.less
@@ -42,6 +42,14 @@
         max-height: 250px;
         overflow-y: auto;
         padding-top: .25em;
+        &::-webkit-scrollbar {
+            -webkit-appearance: none;
+            width: 7px;
+        }
+        &::-webkit-scrollbar-thumb {
+            border-radius: 4px;
+            background-color: rgba(0, 0, 0, .5);
+        }
 
         li {
             border: 0;
diff --git a/app/design/adminhtml/Magento/backend/Magento_ConfigurableProduct/web/css/source/module/components/_currency-addon.less b/app/design/adminhtml/Magento/backend/Magento_ConfigurableProduct/web/css/source/module/components/_currency-addon.less
index 0c33b8d3b8a02c5052816ff30e95cb2e4c6e39cf..1e5d03d6f25c2d4da7215d611dc0f63378e74be0 100644
--- a/app/design/adminhtml/Magento/backend/Magento_ConfigurableProduct/web/css/source/module/components/_currency-addon.less
+++ b/app/design/adminhtml/Magento/backend/Magento_ConfigurableProduct/web/css/source/module/components/_currency-addon.less
@@ -10,7 +10,8 @@
 @currency-addon-symbol__border-color: @field-control__border-color;
 @currency-addon-symbol__color: @color-gray52;
 @currency-addon-symbol__height: @field-control__height;
-@currency-addon-symbol__width: 1.6rem;
+@currency-addon-symbol__width: 2.6rem;
+
 
 //
 //  Common
diff --git a/composer.json b/composer.json
index affd28d1fe133bdc01e8ceb0fdaecbb42440349b..fbc378d01a5cda35f60c60f6aa1db06db7533c48 100644
--- a/composer.json
+++ b/composer.json
@@ -59,6 +59,7 @@
         "ext-dom": "*",
         "ext-simplexml": "*",
         "ext-mcrypt": "*",
+        "ext-bcmath": "*",
         "ext-hash": "*",
         "ext-curl": "*",
         "ext-iconv": "*",
diff --git a/composer.lock b/composer.lock
index 0f16d512409c033227ab24d0550291a0d3258187..2f9c7d47e323b51f2120dd441b1dc7ff86ba4eef 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "content-hash": "a6f1ec648029ca7b40870c3356fa955c",
+    "content-hash": "009029e4e58a3802cc9ad92333fad729",
     "packages": [
         {
             "name": "braintree/braintree_php",
@@ -6498,6 +6498,7 @@
         "ext-dom": "*",
         "ext-simplexml": "*",
         "ext-mcrypt": "*",
+        "ext-bcmath": "*",
         "ext-hash": "*",
         "ext-curl": "*",
         "ext-iconv": "*",
diff --git a/dev/tests/acceptance/tests/functional.suite.dist.yml b/dev/tests/acceptance/tests/functional.suite.dist.yml
index f15d66d983a714920a0f0c0c647163e2a9d667c1..432151bdf565c17c662f771e6721422994afad7f 100644
--- a/dev/tests/acceptance/tests/functional.suite.dist.yml
+++ b/dev/tests/acceptance/tests/functional.suite.dist.yml
@@ -25,7 +25,7 @@ modules:
     config:
         \Magento\FunctionalTestingFramework\Module\MagentoWebDriver:
             url: "%MAGENTO_BASE_URL%"
-            backend_name: admin
+            backend_name: "%MAGENTO_BACKEND_NAME%"
             browser: 'chrome'
             window_size: maximize
             username: "%MAGENTO_ADMIN_USERNAME%"
diff --git a/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductRepositoryInterfaceTest.php b/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductRepositoryInterfaceTest.php
index cb33edce3af39e6e4a11a9e55e56a1bd921e64ba..09f6362c833d4de773bc6702fc0f5a28c614b473 100644
--- a/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductRepositoryInterfaceTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductRepositoryInterfaceTest.php
@@ -47,6 +47,15 @@ class ProductRepositoryInterfaceTest extends WebapiAbstract
             ProductInterface::TYPE_ID => 'simple',
             ProductInterface::PRICE => 10
         ],
+        [
+            ProductInterface::SKU => [
+                'rest' => 'sku%252fwith%252fslashes',
+                'soap' => 'sku%2fwith%2fslashes'
+            ],
+            ProductInterface::NAME => 'Simple Product with Sku with Slashes',
+            ProductInterface::TYPE_ID => 'simple',
+            ProductInterface::PRICE => 10
+        ],
     ];
 
     /**
@@ -135,6 +144,20 @@ class ProductRepositoryInterfaceTest extends WebapiAbstract
         ];
     }
 
+    /**
+     * @magentoApiDataFixture Magento/Catalog/_files/product_simple_sku_with_slash.php
+     */
+    public function testGetBySkuWithSlash()
+    {
+        $productData = $this->productData[2];
+        $response = $this->getProduct($productData[ProductInterface::SKU][TESTS_WEB_API_ADAPTER]);
+        $productData[ProductInterface::SKU] = rawurldecode($productData[ProductInterface::SKU]['soap']);
+        foreach ([ProductInterface::SKU, ProductInterface::NAME, ProductInterface::PRICE] as $key) {
+            $this->assertEquals($productData[$key], $response[$key]);
+        }
+        $this->assertEquals([1], $response[ProductInterface::EXTENSION_ATTRIBUTES_KEY]["website_ids"]);
+    }
+
     /**
      * Test removing association between product and website 1
      * @magentoApiDataFixture Magento/Catalog/_files/product_with_two_websites.php
diff --git a/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockItemTest.php b/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockItemTest.php
index 0d9f121ed77451aa62b3e63acf781eae29612cac..096baa269f3bdef5d85e26a17c193f15f86e5a9d 100644
--- a/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockItemTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockItemTest.php
@@ -49,11 +49,12 @@ class StockItemTest extends WebapiAbstract
 
     /**
      * @param array $result
+     * @param string $productSku
+     *
      * @return array
      */
-    protected function getStockItemBySku($result)
+    protected function getStockItemBySku($result, $productSku)
     {
-        $productSku = 'simple1';
         $serviceInfo = [
             'rest' => [
                 'resourcePath' => self::RESOURCE_GET_PATH . "/$productSku",
@@ -69,6 +70,7 @@ class StockItemTest extends WebapiAbstract
         $apiResult = $this->_webApiCall($serviceInfo, $arguments);
         $result['item_id'] = $apiResult['item_id'];
         $this->assertEquals($result, array_intersect_key($apiResult, $result), 'The stock data does not match.');
+
         return $apiResult;
     }
 
@@ -76,15 +78,33 @@ class StockItemTest extends WebapiAbstract
      * @param array $newData
      * @param array $expectedResult
      * @param array $fixtureData
+     *
      * @magentoApiDataFixture Magento/Catalog/_files/multiple_products.php
      * @dataProvider saveStockItemBySkuWithWrongInputDataProvider
      */
     public function testStockItemPUTWithWrongInput($newData, $expectedResult, $fixtureData)
     {
-        $stockItemOld = $this->getStockItemBySku($fixtureData);
         $productSku = 'simple1';
+        $stockItemOld = $this->getStockItemBySku($fixtureData, $productSku);
         $itemId = $stockItemOld['item_id'];
 
+        $actualData = $this->updateStockItemBySku($productSku, $itemId, $newData);
+
+        $this->assertEquals($stockItemOld['item_id'], $actualData);
+
+        /** @var \Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory $stockItemFactory */
+        $stockItemFactory = $this->objectManager
+            ->get(\Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory::class);
+        $stockItem = $stockItemFactory->create();
+        /** @var \Magento\CatalogInventory\Model\ResourceModel\Stock\Item $stockItemResource */
+        $stockItemResource = $this->objectManager->get(\Magento\CatalogInventory\Model\ResourceModel\Stock\Item::class);
+        $stockItemResource->loadByProductId($stockItem, $stockItemOld['product_id'], $stockItemOld['stock_id']);
+        $expectedResult['item_id'] = $stockItem->getItemId();
+        $this->assertEquals($expectedResult, array_intersect_key($stockItem->getData(), $expectedResult));
+    }
+
+    private function updateStockItemBySku($productSku, $itemId, $newData)
+    {
         $resourcePath = str_replace([':productSku', ':itemId'], [$productSku, $itemId], self::RESOURCE_PUT_PATH);
 
         $serviceInfo = [
@@ -113,7 +133,124 @@ class StockItemTest extends WebapiAbstract
         $data = $stockItemDetailsDo->getData();
         $data['show_default_notification_message'] = false;
         $arguments = ['productSku' => $productSku, 'stockItem' => $data];
-        $this->assertEquals($stockItemOld['item_id'], $this->_webApiCall($serviceInfo, $arguments));
+
+        return $this->_webApiCall($serviceInfo, $arguments);
+    }
+
+    /**
+     * @return array
+     */
+    public function saveStockItemBySkuWithWrongInputDataProvider()
+    {
+        return [
+            [
+                [
+                    'item_id' => 222,
+                    'product_id' => 222,
+                    'stock_id' => 1,
+                    'qty' => '111.0000',
+                    'min_qty' => '0.0000',
+                    'use_config_min_qty' => 1,
+                    'is_qty_decimal' => 0,
+                    'backorders' => 0,
+                    'use_config_backorders' => 1,
+                    'min_sale_qty' => '1.0000',
+                    'use_config_min_sale_qty' => 1,
+                    'max_sale_qty' => '0.0000',
+                    'use_config_max_sale_qty' => 1,
+                    'is_in_stock' => 1,
+                    'low_stock_date' => '',
+                    'notify_stock_qty' => null,
+                    'use_config_notify_stock_qty' => 1,
+                    'manage_stock' => 0,
+                    'use_config_manage_stock' => 1,
+                    'stock_status_changed_auto' => 0,
+                    'use_config_qty_increments' => 1,
+                    'qty_increments' => '0.0000',
+                    'use_config_enable_qty_inc' => 1,
+                    'enable_qty_increments' => 0,
+                    'is_decimal_divided' => 0,
+                ],
+                [
+                    'item_id' => '1',
+                    'product_id' => '10',
+                    'stock_id' => '1',
+                    'qty' => '111.0000',
+                    'min_qty' => '0.0000',
+                    'use_config_min_qty' => '1',
+                    'is_qty_decimal' => '0',
+                    'backorders' => '0',
+                    'use_config_backorders' => '1',
+                    'min_sale_qty' => '1.0000',
+                    'use_config_min_sale_qty' => '1',
+                    'max_sale_qty' => '0.0000',
+                    'use_config_max_sale_qty' => '1',
+                    'is_in_stock' => '1',
+                    'low_stock_date' => null,
+                    'notify_stock_qty' => null,
+                    'use_config_notify_stock_qty' => '1',
+                    'manage_stock' => '0',
+                    'use_config_manage_stock' => '1',
+                    'stock_status_changed_auto' => '0',
+                    'use_config_qty_increments' => '1',
+                    'qty_increments' => '0.0000',
+                    'use_config_enable_qty_inc' => '1',
+                    'enable_qty_increments' => '0',
+                    'is_decimal_divided' => '0',
+                    'type_id' => 'simple',
+                ],
+                [
+                    'item_id' => 1,
+                    'product_id' => 10,
+                    'stock_id' => 1,
+                    'qty' => 100,
+                    'is_in_stock' => 1,
+                    'is_qty_decimal' => '',
+                    'show_default_notification_message' => '',
+                    'use_config_min_qty' => 1,
+                    'min_qty' => 0,
+                    'use_config_min_sale_qty' => 1,
+                    'min_sale_qty' => 1,
+                    'use_config_max_sale_qty' => 1,
+                    'max_sale_qty' => 10000,
+                    'use_config_backorders' => 1,
+                    'backorders' => 0,
+                    'use_config_notify_stock_qty' => 1,
+                    'notify_stock_qty' => 1,
+                    'use_config_qty_increments' => 1,
+                    'qty_increments' => 0,
+                    'use_config_enable_qty_inc' => 1,
+                    'enable_qty_increments' => '',
+                    'use_config_manage_stock' => 1,
+                    'manage_stock' => 1,
+                    'low_stock_date' => '',
+                    'is_decimal_divided' => '',
+                    'stock_status_changed_auto' => 0,
+                ],
+            ],
+        ];
+    }
+
+    /**
+     * @param array $newData
+     * @param array $expectedResult
+     * @param array $fixtureData
+     *
+     * @magentoApiDataFixture Magento/Catalog/_files/product_simple_sku_with_slash.php
+     * @dataProvider testUpdateStockItemBySkuDataProvider
+     */
+    public function testUpdateStockItemBySku($newData, $expectedResult, $fixtureData)
+    {
+        $productSku = [
+            'rest' => 'sku%252fwith%252fslashes',
+            'soap' => 'sku%2fwith%2fslashes'
+        ];
+        $stockItemOld = $this->getStockItemBySku($fixtureData, $productSku[TESTS_WEB_API_ADAPTER]);
+        $itemId = $stockItemOld['item_id'];
+
+        $actualData = $this->updateStockItemBySku($productSku[TESTS_WEB_API_ADAPTER], $itemId, $newData);
+
+        $this->assertEquals($stockItemOld['item_id'], $actualData);
 
         /** @var \Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory $stockItemFactory */
         $stockItemFactory = $this->objectManager
@@ -126,10 +263,7 @@ class StockItemTest extends WebapiAbstract
         $this->assertEquals($expectedResult, array_intersect_key($stockItem->getData(), $expectedResult));
     }
 
-    /**
-     * @return array
-     */
-    public function saveStockItemBySkuWithWrongInputDataProvider()
+    public function testUpdateStockItemBySkuDataProvider()
     {
         return [
             [
@@ -162,7 +296,7 @@ class StockItemTest extends WebapiAbstract
                 ],
                 [
                     'item_id' => '1',
-                    'product_id' => '10',
+                    'product_id' => '1',
                     'stock_id' => '1',
                     'qty' => '111.0000',
                     'min_qty' => '0.0000',
@@ -190,7 +324,7 @@ class StockItemTest extends WebapiAbstract
                 ],
                 [
                     'item_id' => 1,
-                    'product_id' => 10,
+                    'product_id' => 1,
                     'stock_id' => 1,
                     'qty' => 100,
                     'is_in_stock' => 1,
diff --git a/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockStatusTest.php b/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockStatusTest.php
index c7e5736b3324cfbeeed461b12e038f06fadc1fc9..c3c80621f23489eda940408a9e97918a1e3945a0 100644
--- a/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockStatusTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockStatusTest.php
@@ -3,6 +3,7 @@
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
+
 namespace Magento\CatalogInventory\Api;
 
 use Magento\TestFramework\Helper\Bootstrap;
@@ -27,6 +28,14 @@ class StockStatusTest extends WebapiAbstract
         /** @var \Magento\Catalog\Model\Product $product */
         $product = $objectManager->get(\Magento\Catalog\Model\Product::class)->load(1);
         $expectedData = $product->getQuantityAndStockStatus();
+        $actualData = $this->getProductStockStatus($productSku);
+        $this->assertArrayHasKey('stock_item', $actualData);
+        $this->assertEquals($expectedData['is_in_stock'], $actualData['stock_item']['is_in_stock']);
+        $this->assertEquals($expectedData['qty'], $actualData['stock_item']['qty']);
+    }
+
+    private function getProductStockStatus($productSku)
+    {
         $serviceInfo = [
             'rest' => [
                 'resourcePath' => self::RESOURCE_PATH . "/$productSku",
@@ -41,6 +50,25 @@ class StockStatusTest extends WebapiAbstract
 
         $requestData = ['productSku' => $productSku];
         $actualData = $this->_webApiCall($serviceInfo, $requestData);
+
+        return $actualData;
+    }
+
+    /**
+     * @magentoApiDataFixture Magento/Catalog/_files/product_simple_sku_with_slash.php
+     */
+    public function testGetProductStockStatusBySkuWithSlashes()
+    {
+        $productSku = [
+            'rest' => 'sku%252fwith%252fslashes',
+            'soap' => 'sku%2fwith%2fslashes'
+        ];
+        $objectManager = Bootstrap::getObjectManager();
+
+        /** @var \Magento\Catalog\Model\Product $product */
+        $product = $objectManager->get(\Magento\Catalog\Model\Product::class)->load(1);
+        $expectedData = $product->getQuantityAndStockStatus();
+        $actualData = $this->getProductStockStatus($productSku[TESTS_WEB_API_ADAPTER]);
         $this->assertArrayHasKey('stock_item', $actualData);
         $this->assertEquals($expectedData['is_in_stock'], $actualData['stock_item']['is_in_stock']);
         $this->assertEquals($expectedData['qty'], $actualData['stock_item']['qty']);
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartPerCustomer.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartPerCustomer.php
index 2442bd8fe1f5f7a04f05410f57b90e8c0f8dffab..1aee48ad307adf1f9ecc5775c8b23c606706ae99 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartPerCustomer.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartPerCustomer.php
@@ -53,7 +53,10 @@ class AssertCartPerCustomer extends AbstractConstraint
                     ['customer' => $customer]
                 )->run();
                 \PHPUnit_Framework_Assert::assertEquals(
-                    sprintf(self::WELCOME_MESSAGE, $customer->getFirstname()),
+                    sprintf(
+                        self::WELCOME_MESSAGE,
+                        $customer->getFirstname() . ' ' . $customer->getLastname()
+                    ),
                     $cmsIndex->getLinksBlock()->getWelcomeText(),
                     'Customer welcome message is wrong.'
                 );
diff --git a/dev/tests/integration/etc/di/preferences/ce.php b/dev/tests/integration/etc/di/preferences/ce.php
index 0e6f90d75f31122f57d849c00361adc8a4fb2bff..d5aaa7e730826376a130054a65d18ffc084c91e1 100644
--- a/dev/tests/integration/etc/di/preferences/ce.php
+++ b/dev/tests/integration/etc/di/preferences/ce.php
@@ -16,6 +16,8 @@ return [
     \Magento\Framework\App\Response\Http::class => \Magento\TestFramework\Response::class,
     \Magento\Framework\Interception\PluginListInterface::class =>
         \Magento\TestFramework\Interception\PluginList::class,
+    \Magento\Framework\Interception\ObjectManager\ConfigInterface::class =>
+        \Magento\TestFramework\ObjectManager\Config::class,
     \Magento\Framework\Interception\ObjectManager\Config\Developer::class =>
         \Magento\TestFramework\ObjectManager\Config::class,
     \Magento\Framework\View\LayoutInterface::class => \Magento\TestFramework\View\Layout::class,
diff --git a/dev/tests/integration/testsuite/Magento/Backend/Model/MenuTest.php b/dev/tests/integration/testsuite/Magento/Backend/Model/MenuTest.php
index a05359cd8dd31b9f38d761a30f14e0d0294ca5e3..1bebca0236bef2cbc9f371eb5fad8dabb8140aeb 100644
--- a/dev/tests/integration/testsuite/Magento/Backend/Model/MenuTest.php
+++ b/dev/tests/integration/testsuite/Magento/Backend/Model/MenuTest.php
@@ -96,6 +96,7 @@ class MenuTest extends \PHPUnit\Framework\TestCase
                     'title' => 'Extended System',
                     'module' => 'Magento_Backend',
                     'resource' => 'Magento_Backend::system3',
+                    'dependsOnConfig' => 'dev/test/system',
                 ]
             )
         );
@@ -114,12 +115,13 @@ class MenuTest extends \PHPUnit\Framework\TestCase
             'Magento_Backend::system3'
         );
         $serializedString = $menu->serialize();
-        $expected = '[{"parent_id":null,"module_name":"Magento_Backend","sort_index":null,"depends_on_config":null,'
+        $expected = '[{"parent_id":null,"module":"Magento_Backend","sort_index":null,'
+            . '"dependsOnConfig":"dev\/test\/system",'
             . '"id":"Magento_Backend::system3","resource":"Magento_Backend::system3","path":"","action":null,'
-            . '"depends_on_module":null,"tooltip":"","title":"Extended System",'
-            . '"target":null,"sub_menu":[{"parent_id":null,"module_name":"Magento_Backend","sort_index":null,'
-            . '"depends_on_config":null,"id":"Magento_Backend::system3_acl","resource":"Magento_Backend::system3_acl",'
-            . '"path":"","action":"admin\/backend\/acl\/index","depends_on_module":null,"tooltip":"","title":"Acl",'
+            . '"dependsOnModule":null,"toolTip":null,"title":"Extended System",'
+            . '"target":null,"sub_menu":[{"parent_id":null,"module":"Magento_Backend","sort_index":null,'
+            . '"dependsOnConfig":null,"id":"Magento_Backend::system3_acl","resource":"Magento_Backend::system3_acl",'
+            . '"path":"","action":"admin\/backend\/acl\/index","dependsOnModule":null,"toolTip":null,"title":"Acl",'
             . '"target":null,"sub_menu":null}]}]';
         $this->assertEquals($expected, $serializedString);
     }
@@ -129,12 +131,12 @@ class MenuTest extends \PHPUnit\Framework\TestCase
      */
     public function testUnserialize()
     {
-        $serializedMenu = '[{"parent_id":null,"module_name":"Magento_Backend","sort_index":null,'
-            . '"depends_on_config":null,"id":"Magento_Backend::system3","resource":"Magento_Backend::system3",'
-            . '"path":"","action":null,"depends_on_module":null,"tooltip":"","title":"Extended System",'
-            . '"target":null,"sub_menu":[{"parent_id":null,"module_name":"Magento_Backend","sort_index":null,'
-            . '"depends_on_config":null,"id":"Magento_Backend::system3_acl","resource":"Magento_Backend::system3_acl",'
-            . '"path":"","action":"admin\/backend\/acl\/index","depends_on_module":null,"tooltip":"","title":"Acl",'
+        $serializedMenu = '[{"parent_id":null,"module":"Magento_Backend","sort_index":null,'
+            . '"dependsOnConfig":"dev\/test","id":"Magento_Backend::system3","resource":"Magento_Backend::system3",'
+            . '"path":"","action":null,"dependsOnModule":null,"toolTip":null,"title":"Extended System",'
+            . '"target":null,"sub_menu":[{"parent_id":null,"module":"Magento_Backend","sort_index":null,'
+            . '"dependsOnConfig":null,"id":"Magento_Backend::system3_acl","resource":"Magento_Backend::system3_acl",'
+            . '"path":"","action":"admin\/backend\/acl\/index","dependsOnModule":null,"toolTip":null,"title":"Acl",'
             . '"target":null,"sub_menu":null}]}]';
         /** @var Menu $menu */
         $menu = $this->objectManager->get(\Magento\Backend\Model\MenuFactory::class)->create();
@@ -142,30 +144,30 @@ class MenuTest extends \PHPUnit\Framework\TestCase
         $expected = [
             [
                 'parent_id' => null,
-                'module_name' => 'Magento_Backend',
+                'module' => 'Magento_Backend',
                 'sort_index' => null,
-                'depends_on_config' => null,
+                'dependsOnConfig' => 'dev/test',
                 'id' => 'Magento_Backend::system3',
                 'resource' => 'Magento_Backend::system3',
                 'path' => '',
                 'action' => null,
-                'depends_on_module' => null,
-                'tooltip' => '',
+                'dependsOnModule' => null,
+                'toolTip' => null,
                 'title' => 'Extended System',
                 'target' => null,
                 'sub_menu' =>
                     [
                         [
                             'parent_id' => null,
-                            'module_name' => 'Magento_Backend',
+                            'module' => 'Magento_Backend',
                             'sort_index' => null,
-                            'depends_on_config' => null,
+                            'dependsOnConfig' => null,
                             'id' => 'Magento_Backend::system3_acl',
                             'resource' => 'Magento_Backend::system3_acl',
                             'path' => '',
                             'action' => 'admin/backend/acl/index',
-                            'depends_on_module' => null,
-                            'tooltip' => '',
+                            'dependsOnModule' => null,
+                            'toolTip' => null,
                             'title' => 'Acl',
                             'sub_menu' => null,
                             'target' => null
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/product_simple_sku_with_slash.php b/dev/tests/integration/testsuite/Magento/Catalog/_files/product_simple_sku_with_slash.php
new file mode 100644
index 0000000000000000000000000000000000000000..271eda8a0ffce59e442398e4fd923261d28b5f9a
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/product_simple_sku_with_slash.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+/** @var \Magento\TestFramework\ObjectManager $objectManager */
+$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+
+/** @var $product \Magento\Catalog\Model\Product */
+$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
+$product->isObjectNew(true);
+$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE)
+    ->setId(1)
+    ->setAttributeSetId(4)
+    ->setWebsiteIds([1])
+    ->setName('Simple Product with Sku with Slashes')
+    ->setSku('sku/with/slashes')
+    ->setPrice(10)
+    ->setWeight(1)
+    ->setShortDescription("Short description")
+    ->setTaxClassId(0)
+    ->setDescription('Description with <b>html tag</b>')
+    ->setMetaTitle('meta title')
+    ->setMetaKeyword('meta keyword')
+    ->setMetaDescription('meta description')
+    ->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
+    ->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
+    ->setStockData(
+        [
+            'use_config_manage_stock'   => 1,
+            'qty'                       => 100,
+            'is_qty_decimal'            => 0,
+            'is_in_stock'               => 1,
+        ]
+    )->setCanSaveCustomOptions(true)
+    ->setHasOptions(true);
+
+/** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepositoryFactory */
+$productRepository = $objectManager->create(\Magento\Catalog\Api\ProductRepositoryInterface::class);
+$productRepository->save($product);
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/product_simple_sku_with_slash_rollback.php b/dev/tests/integration/testsuite/Magento/Catalog/_files/product_simple_sku_with_slash_rollback.php
new file mode 100644
index 0000000000000000000000000000000000000000..9cd5adae1591535bf82cf853cfbfac0f5ae0f094
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/product_simple_sku_with_slash_rollback.php
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+use Magento\Framework\Exception\NoSuchEntityException;
+
+/** @var \Magento\Framework\Registry $registry */
+$registry = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(\Magento\Framework\Registry::class);
+
+$registry->unregister('isSecureArea');
+$registry->register('isSecureArea', true);
+
+/** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */
+$productRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+    ->get(\Magento\Catalog\Api\ProductRepositoryInterface::class);
+try {
+    $product = $productRepository->get('sku/with/slashes', false, null, true);
+    $productRepository->delete($product);
+} catch (NoSuchEntityException $e) {
+}
+$registry->unregister('isSecureArea');
+$registry->register('isSecureArea', false);
diff --git a/dev/tests/integration/testsuite/Magento/Checkout/Api/PaymentInformationManagementTest.php b/dev/tests/integration/testsuite/Magento/Checkout/Api/PaymentInformationManagementTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..d2ade6296e71cb97a9ce26acfb90836755ef2ae3
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Checkout/Api/PaymentInformationManagementTest.php
@@ -0,0 +1,146 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Checkout\Api;
+
+use Braintree\Result\Error;
+use Magento\Braintree\Gateway\Http\Client\TransactionSale;
+use Magento\Braintree\Model\Ui\ConfigProvider;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\App\State;
+use Magento\Quote\Api\CartRepositoryInterface;
+use Magento\Quote\Api\Data\CartInterface;
+use Magento\Quote\Api\Data\PaymentInterface;
+use Magento\TestFramework\Helper\Bootstrap;
+use Magento\TestFramework\ObjectManager;
+use PHPUnit\Framework\TestCase;
+use PHPUnit_Framework_MockObject_MockObject as MockObject;
+
+class PaymentInformationManagementTest extends TestCase
+{
+    /**
+     * @var ObjectManager
+     */
+    private $objectManager;
+
+    /**
+     * @var TransactionSale|MockObject
+     */
+    private $client;
+
+    /**
+     * @inheritdoc
+     */
+    protected function setUp()
+    {
+        $this->objectManager = Bootstrap::getObjectManager();
+
+        $this->client = $this->getMockBuilder(TransactionSale::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->objectManager->addSharedInstance($this->client, TransactionSale::class);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    protected function tearDown()
+    {
+        $this->objectManager->removeSharedInstance(TransactionSale::class);
+        parent::tearDown();
+    }
+
+    /**
+     * Checks a case when payment method triggers an error during place order flow and
+     * error messages from payment gateway should be mapped.
+     * Error messages might be specific for different areas.
+     *
+     * @magentoAppIsolation enabled
+     * @magentoDataFixture Magento/Checkout/_files/quote_with_shipping_method.php
+     * @magentoConfigFixture current_store payment/braintree/active 1
+     * @dataProvider getErrorPerAreaDataProvider
+     * @expectedException \Magento\Framework\Exception\CouldNotSaveException
+     */
+    public function testSavePaymentInformationAndPlaceOrderWithErrors(string $area, string $errorMessage)
+    {
+        /** @var State $state */
+        $state = $this->objectManager->get(State::class);
+        $state->setAreaCode($area);
+
+        $quote = $this->getQuote('test_order_1');
+
+        /** @var PaymentInterface $payment */
+        $payment = $this->objectManager->create(PaymentInterface::class);
+        $payment->setMethod(ConfigProvider::CODE);
+
+        $errors = [
+            'errors' => [
+                [
+                    'code' => 'fake_code',
+                    'attribute' => 'base',
+                    'message' => 'Error message should not be mapped.'
+                ],
+                [
+                    'code' => 81802,
+                    'attribute' => 'base',
+                    'message' => 'Company is too long.'
+                ],
+                [
+                    'code' => 91511,
+                    'attribute' => 'base',
+                    'message' => 'Customer does not have any credit cards.'
+                ]
+            ]
+        ];
+        $response = new Error(['errors' => $errors]);
+
+        $this->client->method('placeRequest')
+            ->willReturn(['object' => $response]);
+
+        $this->expectExceptionMessage($errorMessage);
+
+        /** @var PaymentInformationManagementInterface $paymentInformationManagement */
+        $paymentInformationManagement = $this->objectManager->get(PaymentInformationManagementInterface::class);
+        $paymentInformationManagement->savePaymentInformationAndPlaceOrder(
+            $quote->getId(),
+            $payment
+        );
+    }
+
+    /**
+     * Gets list of areas with specific error messages.
+     *
+     * @return array
+     */
+    public function getErrorPerAreaDataProvider()
+    {
+        $globalAreaError = 'Company is too long.';
+        return [
+            ['area' => 'frontend', 'error' => $globalAreaError],
+            ['area' => 'adminhtml', 'error' => $globalAreaError . PHP_EOL . 'Customer does not have any credit cards.'],
+        ];
+    }
+
+    /**
+     * Retrieves quote by provided order ID.
+     *
+     * @param string $reservedOrderId
+     * @return CartInterface
+     */
+    private function getQuote(string $reservedOrderId) : CartInterface
+    {
+        /** @var SearchCriteriaBuilder $searchCriteriaBuilder */
+        $searchCriteriaBuilder = $this->objectManager->get(SearchCriteriaBuilder::class);
+        $searchCriteria = $searchCriteriaBuilder->addFilter('reserved_order_id', $reservedOrderId)
+            ->create();
+
+        /** @var CartRepositoryInterface $quoteRepository */
+        $quoteRepository = $this->objectManager->get(CartRepositoryInterface::class);
+        $items = $quoteRepository->getList($searchCriteria)
+            ->getItems();
+
+        return array_pop($items);
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Cms/Model/BlockTest.php b/dev/tests/integration/testsuite/Magento/Cms/Model/BlockTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..9b2bb67c55da1de625657b4cb862a5ceb3b92816
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Cms/Model/BlockTest.php
@@ -0,0 +1,90 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Cms\Model;
+
+use Magento\Cms\Api\BlockRepositoryInterface;
+use Magento\Cms\Model\BlockFactory;
+use Magento\Cms\Model\ResourceModel\Block;
+use Magento\Framework\ObjectManagerInterface;
+use Magento\Framework\Stdlib\DateTime\DateTime;
+use Magento\TestFramework\Helper\Bootstrap;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @magentoAppArea adminhtml
+ */
+class BlockTest extends TestCase
+{
+    /**
+     * @var ObjectManagerInterface
+     */
+    private $objectManager;
+
+    /**
+     * @var Block
+     */
+    private $blockResource;
+
+    /**
+     * @var BlockFactory
+     */
+    private $blockFactory;
+
+    /**
+     * @var BlockRepositoryInterface
+     */
+    private $blockRepository;
+
+    protected function setUp()
+    {
+        $this->objectManager = Bootstrap::getObjectManager();
+
+        /** @var BlockFactory $blockFactory */
+        /** @var Block $blockResource */
+        $this->blockResource   = $this->objectManager->create(Block::class);
+        $this->blockFactory    = $this->objectManager->create(BlockFactory::class);
+        $this->blockRepository = $this->objectManager->create(BlockRepositoryInterface::class);
+    }
+
+    /**
+     * Test UpdateTime
+     * @param array $blockData
+     * @throws \Exception
+     * @magentoDbIsolation enabled
+     * @dataProvider testUpdateTimeDataProvider
+     */
+    public function testUpdateTime(array $blockData)
+    {
+        # Prepare and save the temporary block
+        $tempBlock = $this->blockFactory->create();
+        $tempBlock->setData($blockData);
+        $this->blockResource->save($tempBlock);
+
+        # Load previously created block and compare update_time field
+        $block = $this->blockRepository->getById($tempBlock->getId());
+        $date  = $this->objectManager->get(DateTime::class)->date();
+        $this->assertEquals($date, $block->getUpdateTime());
+    }
+
+    /**
+     * Data provider "testUpdateTime" method
+     * @return array
+     */
+    public function testUpdateTimeDataProvider()
+    {
+        return [
+            [
+                'data' => [
+                    'title'      => 'Test title',
+                    'stores'     => [0],
+                    'identifier' => 'test-identifier',
+                    'content'    => 'Test content',
+                    'is_active'  => 1
+                ]
+            ]
+        ];
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Cms/Model/PageTest.php b/dev/tests/integration/testsuite/Magento/Cms/Model/PageTest.php
index 7a04ddce8fa083e35f1069db561741a1d54213e7..c8040861b08ebb2a37b59741846dbc76607a03f6 100644
--- a/dev/tests/integration/testsuite/Magento/Cms/Model/PageTest.php
+++ b/dev/tests/integration/testsuite/Magento/Cms/Model/PageTest.php
@@ -6,17 +6,13 @@
 namespace Magento\Cms\Model;
 
 use Magento\Cms\Api\PageRepositoryInterface;
+use Magento\Framework\Stdlib\DateTime\DateTime;
 
 /**
  * @magentoAppArea adminhtml
  */
 class PageTest extends \PHPUnit\Framework\TestCase
 {
-    /**
-     * @var \Magento\Cms\Model\Page
-     */
-    protected $model;
-
     protected function setUp()
     {
         $user = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
@@ -51,15 +47,14 @@ class PageTest extends \PHPUnit\Framework\TestCase
      */
     public function testUpdateTime()
     {
-        $updateTime = '2016-09-01 00:00:00';
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         /** @var \Magento\Cms\Model\Page $page */
         $page = $objectManager->create(\Magento\Cms\Model\Page::class);
         $page->setData(['title' => 'Test', 'stores' => [1]]);
-        $page->setUpdateTime($updateTime);
         $page->save();
         $page = $objectManager->get(PageRepositoryInterface::class)->getById($page->getId());
-        $this->assertEquals($updateTime, $page->getUpdateTime());
+        $date = $objectManager->get(DateTime::class)->date();
+        $this->assertEquals($date, $page->getUpdateTime());
     }
 
     public function generateIdentifierFromTitleDataProvider()
diff --git a/dev/tests/integration/testsuite/Magento/Directory/Model/PriceCurrencyTest.php b/dev/tests/integration/testsuite/Magento/Directory/Model/PriceCurrencyTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..fd6b8577eaf9809da9b71b04c5904fa138ca414b
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Directory/Model/PriceCurrencyTest.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Directory\Model;
+
+use Magento\TestFramework\Helper\Bootstrap;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * Provide tests for PriceCurrency model.
+ */
+class PriceCurrencyTest extends TestCase
+{
+    /**
+     * Test subject.
+     *
+     * @var PriceCurrency
+     */
+    private $priceCurrency;
+
+    /**
+     * @inheritdoc
+     */
+    protected function setUp()
+    {
+        $this->priceCurrency = Bootstrap::getObjectManager()->get(PriceCurrency::class);
+    }
+
+    /**
+     * Check PriceCurrency::format() doesn't depend on currency rate configuration.
+     * @return void
+     */
+    public function testFormat()
+    {
+        self::assertSame(
+            '<span class="price">AFN10.00</span>',
+            $this->priceCurrency->format(10, true, 2, null, 'AFN')
+        );
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Session/SidResolverTest.php b/dev/tests/integration/testsuite/Magento/Framework/Session/SidResolverTest.php
index 5af3e52420f113124e21f139cc19ed19e4fe56ed..2cfb8b47da7c32a20122ca350d55d9ed640548c5 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Session/SidResolverTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Session/SidResolverTest.php
@@ -112,6 +112,7 @@ class SidResolverTest extends \PHPUnit\Framework\TestCase
             $this->request->getQuery()->set($this->model->getSessionIdQueryParam($this->session), $testSid);
         }
         $this->assertEquals($sid, $this->model->getSid($this->session));
+        $this->assertEquals($useFrontedSid, $this->model->getUseSessionInUrl());
     }
 
     /**
@@ -150,10 +151,42 @@ class SidResolverTest extends \PHPUnit\Framework\TestCase
         $this->assertTrue($this->model->getUseSessionVar());
     }
 
-    public function testSetGetUseSessionInUrl()
+    /**
+     * Variations of Use SID on frontend value.
+     *
+     * @return array
+     */
+    public function dataProviderSessionInUrl()
+    {
+        return [
+            [true],
+            [false],
+        ];
+    }
+
+    /**
+     * Testing "Use SID in URLs" flag.
+     * Checking that the method returns config value if not explicitly
+     * overridden.
+     *
+     * @param bool $configValue Use SID on frontend config value.
+     * @dataProvider dataProviderSessionInUrl
+     */
+    public function testSetGetUseSessionInUrl($configValue)
     {
-        $this->assertTrue($this->model->getUseSessionInUrl());
-        $this->model->setUseSessionInUrl(false);
-        $this->assertFalse($this->model->getUseSessionInUrl());
+        $this->scopeConfig->expects(
+            $this->any()
+        )->method(
+            'getValue'
+        )->with(
+            \Magento\Framework\Session\SidResolver::XML_PATH_USE_FRONTEND_SID,
+            \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+        )->will(
+            $this->returnValue($configValue)
+        );
+
+        $this->assertEquals($configValue, $this->model->getUseSessionInUrl());
+        $this->model->setUseSessionInUrl(!$configValue);
+        $this->assertEquals(!$configValue, $this->model->getUseSessionInUrl());
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Sales/Model/Order/Pdf/AbstractPdfTest.php b/dev/tests/integration/testsuite/Magento/Sales/Model/Order/Pdf/AbstractPdfTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..a70d4a3b6f0c1fe313a8df65982f87e9c8b22ef5
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Sales/Model/Order/Pdf/AbstractPdfTest.php
@@ -0,0 +1,86 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Sales\Model\Order\Pdf;
+
+use PHPUnit_Framework_MockObject_MockObject as MockObject;
+
+/**
+ * Tests Sales Order PDF abstract model.
+ *
+ * @see \Magento\Sales\Model\Order\Pdf\AbstarctPdf
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class AbstractPdfTest extends \PHPUnit\Framework\TestCase
+{
+    /**
+     * Tests Draw lines method.
+     * Test case when text block cover more than one page.
+     */
+    public function testDrawLineBlocks()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+
+        // Setup most constructor dependencies
+        $paymentData = $objectManager->create(\Magento\Payment\Helper\Data::class);
+        $string = $objectManager->create(\Magento\Framework\Stdlib\StringUtils::class);
+        $scopeConfig = $objectManager->create(\Magento\Framework\App\Config\ScopeConfigInterface::class);
+        $filesystem = $objectManager->create(\Magento\Framework\Filesystem::class);
+        $config = $objectManager->create(\Magento\Sales\Model\Order\Pdf\Config::class);
+        $pdfTotalFactory = $objectManager->create(\Magento\Sales\Model\Order\Pdf\Total\Factory::class);
+        $pdfItemsFactory = $objectManager->create(\Magento\Sales\Model\Order\Pdf\ItemsFactory::class);
+        $locale = $objectManager->create(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class);
+        $translate = $objectManager->create(\Magento\Framework\Translate\Inline\StateInterface::class);
+        $addressRenderer = $objectManager->create(\Magento\Sales\Model\Order\Address\Renderer::class);
+
+        // Test model
+        /** @var \Magento\Sales\Model\Order\Pdf\AbstractPdf|MockObject $model */
+        $model = $this->getMockForAbstractClass(
+            \Magento\Sales\Model\Order\Pdf\AbstractPdf::class,
+            [
+                $paymentData,
+                $string,
+                $scopeConfig,
+                $filesystem,
+                $config,
+                $pdfTotalFactory,
+                $pdfItemsFactory,
+                $locale,
+                $translate,
+                $addressRenderer,
+            ],
+            '',
+            true,
+            true,
+            true,
+            ['getPdf', '_getPdf']
+        );
+        $pdf = new \Zend_Pdf();
+        $model->expects($this->any())->method('getPdf')->will($this->returnValue($pdf));
+        $model->expects($this->any())->method('_getPdf')->will($this->returnValue($pdf));
+
+        /** Generate multiline block, that cover more than one page */
+        $lines = [];
+        for ($lineNumber = 1; $lineNumber <= 100; $lineNumber++) {
+            $lines[] = [[
+                'feed' => 0,
+                'font_size' => 10,
+                'text' => 'Text line ' . $lineNumber,
+            ]];
+        }
+        $draw = [[
+            'height' => 12,
+            'lines' => $lines,
+        ]];
+
+        $page = $model->newPage(['page_size' => \Zend_Pdf_Page::SIZE_A4]);
+
+        $model->drawLineBlocks($page, $draw);
+        $this->assertEquals(
+            3,
+            count($pdf->pages)
+        );
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixtureModelTest.php b/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixtureModelTest.php
index 1320c5aa5844dba9ada101378b19b714bfeefd36..312f29898d709128b9e4b5fb15bd5169b1b75f32 100644
--- a/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixtureModelTest.php
+++ b/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixtureModelTest.php
@@ -118,7 +118,7 @@ class FixtureModelTest extends \Magento\TestFramework\Indexer\TestCase
 
         foreach ($this->entityAsserts as $entityAssert) {
             try {
-                $entityAssert->assert();
+                $this->assertTrue($entityAssert->assert());
             } catch (\AssertionError $assertionError) {
                 $this->assertTrue(false, $assertionError->getMessage());
             }
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/BundleProductsAssert.php b/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/BundleProductsAssert.php
index 496dc1b5c8e43b4960e633ab98a26c6e36675b57..ae8faab3897a55e88ff58b49f9aaf81f78f1f3c9 100644
--- a/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/BundleProductsAssert.php
+++ b/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/BundleProductsAssert.php
@@ -48,7 +48,7 @@ class BundleProductsAssert
     /**
      * Asserts that generated bundled products are valid
      *
-     * @return void
+     * @return bool
      * @throws \Magento\Framework\Exception\NoSuchEntityException
      * @throws \AssertionError
      */
@@ -74,5 +74,7 @@ class BundleProductsAssert
                 throw new \AssertionError('Bundle option product links amount is wrong');
             }
         }
+
+        return true;
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/ConfigurableProductsAssert.php b/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/ConfigurableProductsAssert.php
index b7463f48d4bffe22efba5e5d5dff801e0b93c8db..fce73b137763f8e8baa9e24c9bdafc358456ac60 100644
--- a/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/ConfigurableProductsAssert.php
+++ b/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/ConfigurableProductsAssert.php
@@ -46,7 +46,7 @@ class ConfigurableProductsAssert
     /**
      * Asserts that generated configurable products are valid
      *
-     * @return void
+     * @return bool
      * @throws \Magento\Framework\Exception\NoSuchEntityException
      * @throws \Magento\Framework\Exception\InputException
      * @throws \AssertionError
@@ -86,5 +86,7 @@ class ConfigurableProductsAssert
                 throw new \AssertionError('Configurable option values amount is wrong');
             }
         }
+
+        return true;
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/ImagesAssert.php b/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/ImagesAssert.php
index da868789962294cabd8d2b33cb5538405f663097..4c035b99ba7386f7f035cd5fe84e5b69a6752194 100644
--- a/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/ImagesAssert.php
+++ b/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/ImagesAssert.php
@@ -70,6 +70,7 @@ class ImagesAssert
     /**
      * Performs assertions over images
      *
+     * @return bool
      * @throws \AssertionError
      */
     public function assert()
@@ -82,6 +83,8 @@ class ImagesAssert
             $this->assertProductMediaAttributes($product);
             $this->assertProductImageExistsInFS($product);
         }
+
+        return true;
     }
 
     /**
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/SimpleProductsAssert.php b/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/SimpleProductsAssert.php
index f43622f13680b2244206ecb4354d2e02d2efaffc..d3e5d2226a87c61dde6d25c41aa9ef5eaace8421 100644
--- a/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/SimpleProductsAssert.php
+++ b/dev/tests/integration/testsuite/Magento/Setup/Fixtures/FixturesAsserts/SimpleProductsAssert.php
@@ -43,7 +43,7 @@ class SimpleProductsAssert
     /**
      * Asserts that generated simple products are valid
      *
-     * @return void
+     * @return bool
      * @throws \Magento\Framework\Exception\NoSuchEntityException
      * @throws \AssertionError
      */
@@ -52,5 +52,7 @@ class SimpleProductsAssert
         $product = $this->productRepository->get(sprintf(SimpleProductsFixture::SKU_PATTERN, 1));
         $this->productAssert->assertProductsCount(SimpleProductsFixture::SKU_PATTERN, 2);
         $this->productAssert->assertProductType('simple', $product);
+
+        return true;
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Shipping/Helper/DataTest.php b/dev/tests/integration/testsuite/Magento/Shipping/Helper/DataTest.php
index eaac89cc6851beec44e52b46bffa51373cd51fc0..99a28812a12d5737d0bb876f45df49c15c0226f6 100644
--- a/dev/tests/integration/testsuite/Magento/Shipping/Helper/DataTest.php
+++ b/dev/tests/integration/testsuite/Magento/Shipping/Helper/DataTest.php
@@ -5,16 +5,18 @@
  */
 namespace Magento\Shipping\Helper;
 
+use Magento\Store\Model\StoreManagerInterface;
+
 class DataTest extends \PHPUnit\Framework\TestCase
 {
     /**
      * @var \Magento\Shipping\Helper\Data
      */
-    protected $_helper = null;
+    private $helper;
 
     protected function setUp()
     {
-        $this->_helper = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
+        $this->helper = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
             \Magento\Shipping\Helper\Data::class
         );
     }
@@ -31,33 +33,77 @@ class DataTest extends \PHPUnit\Framework\TestCase
     {
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         $constructArgs = [];
-        if (\Magento\Sales\Model\Order\Shipment::class == $modelName) {
-            $orderRepository = $this->_getMockOrderRepository($code);
+        if (\Magento\Sales\Model\Order\Shipment::class === $modelName) {
+            $orderRepository = $this->getMockOrderRepository($code);
+            $constructArgs['orderRepository'] = $orderRepository;
+        } elseif (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
+            $shipmentRepository = $this->getMockShipmentRepository($code);
+            $constructArgs['shipmentRepository'] = $shipmentRepository;
+        }
+
+        $model = $objectManager->create($modelName, $constructArgs);
+        $model->{$getIdMethod}($entityId);
+
+        if (\Magento\Sales\Model\Order::class === $modelName) {
+            $model->setProtectCode($code);
+        }
+        if (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
+            $model->setParentId(1);
+        }
+
+        $actual = $this->helper->getTrackingPopupUrlBySalesModel($model);
+        $this->assertEquals($expected, $actual);
+    }
+
+    /**
+     * From the admin panel with custom URL we should have generated frontend URL
+     *
+     * @param string $modelName
+     * @param string $getIdMethod
+     * @param int $entityId
+     * @param string $code
+     * @param string $expected
+     * @magentoAppArea adminhtml
+     * @magentoConfigFixture admin_store web/unsecure/base_link_url http://admin.localhost/
+     * @dataProvider getTrackingPopupUrlBySalesModelDataProvider
+     */
+    public function testGetTrackingPopupUrlBySalesModelFromAdmin($modelName, $getIdMethod, $entityId, $code, $expected)
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+
+        /** @var StoreManagerInterface $storeManager */
+        $storeManager = $objectManager->create(StoreManagerInterface::class);
+        $storeManager->reinitStores();
+
+        $constructArgs = [];
+        if (\Magento\Sales\Model\Order\Shipment::class === $modelName) {
+            $orderRepository = $this->getMockOrderRepository($code);
             $constructArgs['orderRepository'] = $orderRepository;
-        } elseif (\Magento\Sales\Model\Order\Shipment\Track::class == $modelName) {
-            $shipmentRepository = $this->_getMockShipmentRepository($code);
+        } elseif (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
+            $shipmentRepository = $this->getMockShipmentRepository($code);
             $constructArgs['shipmentRepository'] = $shipmentRepository;
         }
 
         $model = $objectManager->create($modelName, $constructArgs);
         $model->{$getIdMethod}($entityId);
 
-        if (\Magento\Sales\Model\Order::class == $modelName) {
+        if (\Magento\Sales\Model\Order::class === $modelName) {
             $model->setProtectCode($code);
         }
-        if (\Magento\Sales\Model\Order\Shipment\Track::class == $modelName) {
+        if (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
             $model->setParentId(1);
         }
 
-        $actual = $this->_helper->getTrackingPopupUrlBySalesModel($model);
+        //Frontend URL should be used there
+        $actual = $this->helper->getTrackingPopupUrlBySalesModel($model);
         $this->assertEquals($expected, $actual);
     }
 
     /**
      * @param $code
-     * @return \Magento\Sales\Api\OrderRepositoryInterface
+     * @return \Magento\Sales\Api\OrderRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected function _getMockOrderRepository($code)
+    private function getMockOrderRepository($code)
     {
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         $order = $objectManager->create(\Magento\Sales\Model\Order::class);
@@ -71,10 +117,10 @@ class DataTest extends \PHPUnit\Framework\TestCase
      * @param $code
      * @return \Magento\Sales\Model\Order\ShipmentRepository|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected function _getMockShipmentRepository($code)
+    private function getMockShipmentRepository($code)
     {
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
-        $orderRepository = $this->_getMockOrderRepository($code);
+        $orderRepository = $this->getMockOrderRepository($code);
         $shipmentArgs = ['orderRepository' => $orderRepository];
 
         $shipment = $objectManager->create(\Magento\Sales\Model\Order\Shipment::class, $shipmentArgs);
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Braintree/frontend/js/view/payment/method-renderer/cc-form.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Braintree/frontend/js/view/payment/method-renderer/cc-form.test.js
index d71f517b5e7f9c1ccde4a6de66376bb5820faf1e..52739eec2782b071a08d7a680677939e8dd96979 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Braintree/frontend/js/view/payment/method-renderer/cc-form.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Braintree/frontend/js/view/payment/method-renderer/cc-form.test.js
@@ -27,7 +27,7 @@ define([
                 ),
                 'Magento_Braintree/js/view/payment/adapter':  jasmine.createSpyObj(
                     'adapter',
-                    ['setup', 'setConfig']
+                    ['setup', 'setConfig', 'showError']
                 )
             },
             braintreeCcForm;
@@ -43,14 +43,17 @@ define([
             };
             injector.mock(mocks);
             injector.require(['Magento_Braintree/js/view/payment/method-renderer/cc-form'], function (Constr) {
-                    braintreeCcForm = new Constr({
-                        provider: 'provName',
-                        name: 'test',
-                        index: 'test'
-                    });
-
-                    done();
+                braintreeCcForm = new Constr({
+                    provider: 'provName',
+                    name: 'test',
+                    index: 'test',
+                    item: {
+                        title: 'Braintree'
+                    }
                 });
+
+                done();
+            });
         });
 
         it('Check if payment code and message container are restored after onActiveChange call.', function () {
@@ -65,5 +68,21 @@ define([
             expect(braintreeCcForm.getCode()).toEqual(expectedCode);
             expect(braintreeCcForm.messageContainer).toEqual(expectedMessageContainer);
         });
+
+        it('Check if form validation fails when "Place Order" button should be active.', function () {
+            var errorMessage = 'Something went wrong.',
+
+                /**
+                 * Anonymous wrapper
+                 */
+                func = function () {
+                    braintreeCcForm.clientConfig.onError({
+                        'message': errorMessage
+                    });
+                };
+
+            expect(func).toThrow(errorMessage);
+            expect(braintreeCcForm.isPlaceOrderActionAllowed()).toBeTruthy();
+        });
     });
 });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..545daf0a330c9dc04f3a8f03bf8d7998852a299e
--- /dev/null
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js
@@ -0,0 +1,55 @@
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+define([
+    'squire'
+], function (Squire) {
+    'use strict';
+
+    var injector = new Squire(),
+        mocks = {
+            'Magento_Checkout/js/action/place-order': jasmine.createSpy('placeOrderAction'),
+            'Magento_CheckoutAgreements/js/model/agreements-assigner': jasmine.createSpy('agreementsAssigner')
+        },
+        defaultContext = require.s.contexts._,
+        mixin,
+        placeOrderAction;
+
+    beforeEach(function (done) {
+        window.checkoutConfig = {
+            checkoutAgreements: {
+                isEnabled: true
+            }
+        };
+        injector.mock(mocks);
+        injector.require([
+            'Magento_CheckoutAgreements/js/model/place-order-mixin',
+            'Magento_Checkout/js/action/place-order'
+        ], function (Mixin, placeOrder) {
+            mixin = Mixin;
+            placeOrderAction = placeOrder;
+            done();
+        });
+    });
+
+    describe('Magento_CheckoutAgreements/js/model/place-order-mixin', function () {
+        it('mixin is applied to Magento_Checkout/js/action/place-order', function () {
+            var placeOrderMixins = defaultContext.config.config.mixins['Magento_Checkout/js/action/place-order'];
+
+            expect(placeOrderMixins['Magento_CheckoutAgreements/js/model/place-order-mixin']).toBe(true);
+        });
+
+        it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () {
+            var messageContainer = jasmine.createSpy('messageContainer'),
+                paymentData = {};
+
+            mixin(placeOrderAction)(paymentData, messageContainer);
+            expect(mocks['Magento_CheckoutAgreements/js/model/agreements-assigner'])
+                .toHaveBeenCalledWith(paymentData);
+            expect(mocks['Magento_Checkout/js/action/place-order'])
+                .toHaveBeenCalledWith(paymentData, messageContainer);
+        });
+    });
+});
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed525bfd96a6c6ea57ffdbd56efd30a6ee920718
--- /dev/null
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js
@@ -0,0 +1,56 @@
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+define([
+    'squire'
+], function (Squire) {
+    'use strict';
+
+    var injector = new Squire(),
+        mocks = {
+            'Magento_Checkout/js/action/set-payment-information': jasmine.createSpy('placeOrderAction'),
+            'Magento_CheckoutAgreements/js/model/agreements-assigner': jasmine.createSpy('agreementsAssigner')
+        },
+        defaultContext = require.s.contexts._,
+        mixin,
+        placeOrderAction;
+
+    beforeEach(function (done) {
+        window.checkoutConfig = {
+            checkoutAgreements: {
+                isEnabled: true
+            }
+        };
+        injector.mock(mocks);
+        injector.require([
+            'Magento_CheckoutAgreements/js/model/set-payment-information-mixin',
+            'Magento_Checkout/js/action/set-payment-information'
+        ], function (Mixin, setPaymentInformation) {
+            mixin = Mixin;
+            placeOrderAction = setPaymentInformation;
+            done();
+        });
+    });
+
+    describe('Magento_CheckoutAgreements/js/model/set-payment-information-mixin', function () {
+        it('mixin is applied to Magento_Checkout/js/action/set-payment-information', function () {
+            var placeOrderMixins = defaultContext
+                .config.config.mixins['Magento_Checkout/js/action/set-payment-information'];
+
+            expect(placeOrderMixins['Magento_CheckoutAgreements/js/model/set-payment-information-mixin']).toBe(true);
+        });
+
+        it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () {
+            var messageContainer = jasmine.createSpy('messageContainer'),
+                paymentData = {};
+
+            mixin(placeOrderAction)(messageContainer, paymentData);
+            expect(mocks['Magento_CheckoutAgreements/js/model/agreements-assigner'])
+                .toHaveBeenCalledWith(paymentData);
+            expect(mocks['Magento_Checkout/js/action/set-payment-information'])
+                .toHaveBeenCalledWith(messageContainer, paymentData);
+        });
+    });
+});
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js
index dc520c52385687b72d67602bad2cf8fd060b29ab..47e3507ea13214957d8ec0c0f9453d6fe93aa1a6 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js
@@ -16,6 +16,13 @@ define([
 
     describe('paypal/js/view/payment/method-renderer/paypal-express-abstract', function () {
         var injector = new Squire(),
+            successPromise = jasmine.createSpyObj('successPromise', ['done']),
+            setPaymentMock = jasmine.createSpy('set-payment-information', function () {
+                return successPromise;
+            }).and.callThrough(),
+            validateMock = jasmine.createSpy('validate', function () {
+                return true;
+            }).and.callThrough(),
             mocks = {
                 'Magento_Checkout/js/model/quote': {
                     billingAddress: ko.observable(),
@@ -23,6 +30,10 @@ define([
                     paymentMethod: ko.observable(),
                     totals: ko.observable({})
 
+                },
+                'Magento_Checkout/js/action/set-payment-information': setPaymentMock,
+                'Magento_Checkout/js/model/payment/additional-validators': {
+                    validate: validateMock
                 }
             },
             paypalExpressAbstract,
@@ -85,6 +96,23 @@ define([
             }, 500);
         });
 
+        it('setPaymentMethodAction is called before redirect to paypal', function () {
+            spyOn(paypalExpressAbstract, 'selectPaymentMethod');
+            paypalExpressAbstract.continueToPayPal();
+            expect(paypalExpressAbstract.selectPaymentMethod).toHaveBeenCalled();
+            expect(validateMock).toHaveBeenCalled();
+            expect(validateMock.calls.mostRecent()).toEqual(jasmine.objectContaining({
+                object: mocks['Magento_Checkout/js/model/payment/additional-validators'],
+                args: [],
+                returnValue: true
+            }));
+            expect(setPaymentMock).toHaveBeenCalled();
+            expect(setPaymentMock.calls.mostRecent()).toEqual(jasmine.objectContaining({
+                returnValue: successPromise
+            }));
+            expect(successPromise.done).toHaveBeenCalledWith(jasmine.any(Function));
+        });
+
         afterAll(function (done) {
             tplElement.remove();
             done();
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/validation/rules.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/validation/rules.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..334bf94892b792d02001e63f5ccd3d6e65175b01
--- /dev/null
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/validation/rules.test.js
@@ -0,0 +1,43 @@
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+/* eslint-disable max-nested-callbacks */
+define([
+    'Magento_Ui/js/lib/validation/rules'
+], function (rules) {
+    'use strict';
+
+    describe('Magento_Ui/js/lib/validation/rules', function () {
+        describe('"range-words" method', function () {
+            it('Check on empty value', function () {
+                var value = '',
+                    params = [1,3];
+
+                expect(rules['range-words'].handler(value, params)).toBe(false);
+            });
+
+            it('Check on redundant words', function () {
+                var value = 'a b c d',
+                    params = [1,3];
+
+                expect(rules['range-words'].handler(value, params)).toBe(false);
+            });
+
+            it('Check with three words', function () {
+                var value = 'a b c',
+                    params = [1,3];
+
+                expect(rules['range-words'].handler(value, params)).toBe(true);
+            });
+
+            it('Check with one word', function () {
+                var value = 'a',
+                    params = [1,3];
+
+                expect(rules['range-words'].handler(value, params)).toBe(true);
+            });
+        });
+    });
+});
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/exception_hierarchy.txt b/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/exception_hierarchy.txt
index 6897f43a02b34f4cd9aeeefd77553a74448b6e8c..79f4cc280a15e3d1616dcb464efefb1d3e19073f 100644
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/exception_hierarchy.txt
+++ b/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/exception_hierarchy.txt
@@ -11,3 +11,4 @@
 \Magento\Framework\DB\FieldDataConversionException
 \Magento\Signifyd\Model\SignifydGateway\GatewayException
 \Magento\Signifyd\Model\SignifydGateway\ApiCallException
+\Magento\Catalog\Model\Product\Image\NotLoadInfoImageException
\ No newline at end of file
diff --git a/lib/internal/Magento/Framework/App/Config/Scope/Converter.php b/lib/internal/Magento/Framework/App/Config/Scope/Converter.php
index 7f4a3aead36f532a17b1b8033cf61c644ba0c52b..d8e9469ac398035a0c85f694dc2ae2fc4b24b96d 100644
--- a/lib/internal/Magento/Framework/App/Config/Scope/Converter.php
+++ b/lib/internal/Magento/Framework/App/Config/Scope/Converter.php
@@ -5,6 +5,7 @@
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
+
 namespace Magento\Framework\App\Config\Scope;
 
 class Converter implements \Magento\Framework\Config\ConverterInterface
@@ -19,7 +20,7 @@ class Converter implements \Magento\Framework\Config\ConverterInterface
     {
         $output = [];
         foreach ($source as $key => $value) {
-            $this->_setArrayValue($output, $key, $value);
+            $output = $this->_setArrayValue($output, $key, $value);
         }
         return $output;
     }
@@ -27,21 +28,25 @@ class Converter implements \Magento\Framework\Config\ConverterInterface
     /**
      * Set array value by path
      *
-     * @param array &$container
+     * @param array $container
      * @param string $path
      * @param string $value
-     * @return void
+     * @return array
      */
-    protected function _setArrayValue(array &$container, $path, $value)
+    protected function _setArrayValue(array $container, $path, $value)
     {
-        $segments = explode('/', $path);
-        $currentPointer = & $container;
-        foreach ($segments as $segment) {
-            if (!isset($currentPointer[$segment])) {
-                $currentPointer[$segment] = [];
+        $parts = explode('/', $path);
+        if (count($parts) > 0) {
+            $parts = array_reverse($parts);
+            $result = $value;
+            foreach ($parts as $part) {
+                $part = trim($part);
+                if ($part !== '') {
+                    $result = [$part => $result];
+                }
             }
-            $currentPointer = & $currentPointer[$segment];
+            $container = array_merge_recursive($container, $result);
         }
-        $currentPointer = $value;
+        return $container;
     }
 }
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Config/Scope/ConverterTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Config/Scope/ConverterTest.php
index ad449c5852fbb99aa1f14bf96ab19581de0d33cb..283b56fccde2ad90b537534e3a7ed34e349e778e 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Config/Scope/ConverterTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Config/Scope/ConverterTest.php
@@ -3,6 +3,7 @@
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
+
 namespace Magento\Framework\App\Test\Unit\Config\Scope;
 
 class ConverterTest extends \PHPUnit\Framework\TestCase
@@ -19,8 +20,29 @@ class ConverterTest extends \PHPUnit\Framework\TestCase
 
     public function testConvert()
     {
-        $data = ['some/config/path1' => 'value1', 'some/config/path2' => 'value2'];
-        $expectedResult = ['some' => ['config' => ['path1' => 'value1', 'path2' => 'value2']]];
+        $data = [
+            'some/config/path1' => 'value1',
+            'some/config/path2' => 'value2',
+            'some/config/path2' => 'value3',
+            'some2/config/path2' => 'value4',
+            'some/bad/path////' => 'value5',
+        ];
+        $expectedResult = [
+            'some' => [
+                'config' => [
+                    'path1' => 'value1',
+                    'path2' => 'value3',
+                ],
+                'bad' => [
+                    'path' => 'value5',
+                ],
+            ],
+            'some2' => [
+                'config' => [
+                    'path2' => 'value4',
+                ]
+            ]
+        ];
         $this->assertEquals($expectedResult, $this->_model->convert($data));
     }
 }
diff --git a/lib/internal/Magento/Framework/DomDocument/DomDocumentFactory.php b/lib/internal/Magento/Framework/DomDocument/DomDocumentFactory.php
index 677e4d654e52c4334b4bee2775805a86afa3aa7e..d2e16700bc904fdbac6b5596a6c09baf50777f8a 100644
--- a/lib/internal/Magento/Framework/DomDocument/DomDocumentFactory.php
+++ b/lib/internal/Magento/Framework/DomDocument/DomDocumentFactory.php
@@ -3,6 +3,7 @@
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
+
 namespace Magento\Framework\DomDocument;
 
 /**
diff --git a/lib/internal/Magento/Framework/Event/Test/Unit/Config/_files/valid_events.xml b/lib/internal/Magento/Framework/Event/Test/Unit/Config/_files/valid_events.xml
index 5cf120adb6b9944fae021bafe59bb76015e83efd..a9f445339e3dcbd81ed6f0344a7f19515fac27d3 100644
--- a/lib/internal/Magento/Framework/Event/Test/Unit/Config/_files/valid_events.xml
+++ b/lib/internal/Magento/Framework/Event/Test/Unit/Config/_files/valid_events.xml
@@ -12,4 +12,7 @@
     <event name="authorization_roles_save_before">
         <observer name="second_name" instance="Some_Test_Value_Two" />
     </event>
+    <event name="authorization_roles_save_before123">
+        <observer name="second_name" instance="Some_Test_Value_Two" />
+    </event>
 </config>
diff --git a/lib/internal/Magento/Framework/Event/etc/events.xsd b/lib/internal/Magento/Framework/Event/etc/events.xsd
index ad7c5e59da99c7952e4d387051468697d49a92b5..d656b7fdb6ed66aedfd5dab0863017ab16e9d717 100644
--- a/lib/internal/Magento/Framework/Event/etc/events.xsd
+++ b/lib/internal/Magento/Framework/Event/etc/events.xsd
@@ -60,11 +60,11 @@
     <xs:simpleType name="eventName">
         <xs:annotation>
             <xs:documentation>
-                Event name can contain only [a-zA-Z_].
+                Event name can contain only [a-zA-Z0-9_].
             </xs:documentation>
         </xs:annotation>
         <xs:restriction base="xs:string">
-            <xs:pattern value="[a-zA-Z_]+" />
+            <xs:pattern value="[a-zA-Z0-9_]+" />
         </xs:restriction>
     </xs:simpleType>
 </xs:schema>
diff --git a/lib/internal/Magento/Framework/Model/ResourceModel/Db/Collection/AbstractCollection.php b/lib/internal/Magento/Framework/Model/ResourceModel/Db/Collection/AbstractCollection.php
index c94de1534b29e8f70a8723f2d000862266bc9878..b57755ed7eafa51bc3361aad0f5adf0b6584916d 100644
--- a/lib/internal/Magento/Framework/Model/ResourceModel/Db/Collection/AbstractCollection.php
+++ b/lib/internal/Magento/Framework/Model/ResourceModel/Db/Collection/AbstractCollection.php
@@ -496,9 +496,9 @@ abstract class AbstractCollection extends AbstractDb implements SourceProviderIn
     /**
      * Join table to collection select
      *
-     * @param string $table
+     * @param string|array $table
      * @param string $cond
-     * @param string $cols
+     * @param string|array $cols
      * @return $this
      */
     public function join($table, $cond, $cols = '*')
diff --git a/lib/internal/Magento/Framework/Session/SidResolver.php b/lib/internal/Magento/Framework/Session/SidResolver.php
index 40d985614a3c6d80c80277f979345e5e30f150b6..18f6138b661bf9c1094d6826f4ec98f2cada9516 100644
--- a/lib/internal/Magento/Framework/Session/SidResolver.php
+++ b/lib/internal/Magento/Framework/Session/SidResolver.php
@@ -44,10 +44,10 @@ class SidResolver implements SidResolverInterface
     /**
      * Use session in URL flag
      *
-     * @var bool
+     * @var bool|null
      * @see \Magento\Framework\UrlInterface
      */
-    protected $_useSessionInUrl = true;
+    protected $_useSessionInUrl;
 
     /**
      * @var string
@@ -82,10 +82,7 @@ class SidResolver implements SidResolverInterface
     public function getSid(SessionManagerInterface $session)
     {
         $sidKey = null;
-        $useSidOnFrontend = $this->scopeConfig->getValue(
-            self::XML_PATH_USE_FRONTEND_SID,
-            $this->_scopeType
-        );
+        $useSidOnFrontend = $this->getUseSessionInUrl();
         if ($useSidOnFrontend && $this->request->getQuery(
             $this->getSessionIdQueryParam($session),
             false
@@ -147,13 +144,22 @@ class SidResolver implements SidResolverInterface
     }
 
     /**
-     * Retrieve use session in URL flag
+     * Retrieve use session in URL flag.
      *
      * @return bool
      * @SuppressWarnings(PHPMD.BooleanGetMethodName)
      */
     public function getUseSessionInUrl()
     {
+        if ($this->_useSessionInUrl === null) {
+            //Using config value by default, can be overridden by using the
+            //setter.
+            $this->_useSessionInUrl = (bool)$this->scopeConfig->getValue(
+                self::XML_PATH_USE_FRONTEND_SID,
+                $this->_scopeType
+            );
+        }
+
         return $this->_useSessionInUrl;
     }
 }
diff --git a/lib/internal/Magento/Framework/Test/Unit/DomDocument/DomDocumentFactoryTest.php b/lib/internal/Magento/Framework/Test/Unit/DomDocument/DomDocumentFactoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e3ea74339e0436567166a6520f31e06b45563a47
--- /dev/null
+++ b/lib/internal/Magento/Framework/Test/Unit/DomDocument/DomDocumentFactoryTest.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Framework\Test\Unit\DomDocument;
+
+use Magento\Framework\DomDocument\DomDocumentFactory;
+
+class DomDocumentFactoryTest extends \PHPUnit\Framework\TestCase
+{
+    public function testCreateReturnsDomDocument()
+    {
+        $domDocumentFactory = new DomDocumentFactory();
+        $this->assertInstanceOf(
+            \DOMDocument::class,
+            $domDocumentFactory->create()
+        );
+    }
+}
diff --git a/lib/internal/Magento/Framework/composer.json b/lib/internal/Magento/Framework/composer.json
index 17669bd78bd698c3f035091f5d180a4ed03146d2..49265774814d964d4897ede372c636c8b04eb1ec 100644
--- a/lib/internal/Magento/Framework/composer.json
+++ b/lib/internal/Magento/Framework/composer.json
@@ -20,6 +20,7 @@
         "ext-openssl": "*",
         "lib-libxml": "*",
         "ext-xsl": "*",
+        "ext-bcmath": "*",
         "symfony/process": "~2.1",
         "colinmollenhour/php-redis-session-abstract": "1.3.4",
         "composer/composer": "1.4.1",
diff --git a/setup/performance-toolkit/README.md b/setup/performance-toolkit/README.md
index 0152f3f917ad30b58367d9d00fd578d577e30771..700f6cd0d775d4cd62a85a78892f203736b2a971 100644
--- a/setup/performance-toolkit/README.md
+++ b/setup/performance-toolkit/README.md
@@ -62,7 +62,7 @@ The following parameters can be passed to the `benchmark.jmx` scenario:
 | admin_user                                    | admin               | Admin backend user.                                                                      |
 | admin_password                                | 123123q             | Admin backend password.                                                                  |
 | customer_password                             | 123123q             | Storefront customer password.                                                            |
-| customers_page_size                           | 20                  | Page size for customers grid in Magento Admin.                                           |
+| customers_page_size                           | 50                  | Page size for customers grid in Magento Admin.                                           |
 | files_folder                                  | ./files/            | Path to various files that are used in scenario (`setup/performance-toolkit/files`).     |
 | loops                                         | 1                   | Number of loops to run.                                                                  |
 | frontendPoolUsers                             | 1                   | Total number of Frontend threads.                                                        |
diff --git a/setup/performance-toolkit/benchmark.jmx b/setup/performance-toolkit/benchmark.jmx
index 655b19760b958027886a4f5f75463f447d045857..154915cd3a4fcb7b9abd2bf5cb304625a50470a3 100644
--- a/setup/performance-toolkit/benchmark.jmx
+++ b/setup/performance-toolkit/benchmark.jmx
@@ -59,6 +59,11 @@
             <stringProp name="Argument.value">${__P(loops,1)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
+          <elementProp name="accountManagementPercentage" elementType="Argument">
+            <stringProp name="Argument.name">accountManagementPercentage</stringProp>
+            <stringProp name="Argument.value">${__P(accountManagementPercentage,0)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
           <elementProp name="addToCartByCustomerPercentage" elementType="Argument">
             <stringProp name="Argument.name">addToCartByCustomerPercentage</stringProp>
             <stringProp name="Argument.value">${__P(addToCartByCustomerPercentage,0)}</stringProp>
@@ -74,11 +79,6 @@
             <stringProp name="Argument.value">${__P(addToWishlistPercentage,2)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
-          <elementProp name="adminAccountManagementPercentage" elementType="Argument">
-            <stringProp name="Argument.name">adminAccountManagementPercentage</stringProp>
-            <stringProp name="Argument.value">${__P(adminAccountManagementPercentage,0)}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-          </elementProp>
           <elementProp name="adminCMSManagementDelay" elementType="Argument">
             <stringProp name="Argument.name">adminCMSManagementDelay</stringProp>
             <stringProp name="Argument.value">${__P(adminCMSManagementDelay,0)}</stringProp>
@@ -224,9 +224,14 @@
             <stringProp name="Argument.value">${__P(apiOrderInvoiceShipmentSync,0)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
+          <elementProp name="apiPoolUsers" elementType="Argument">
+            <stringProp name="Argument.name">apiPoolUsers</stringProp>
+            <stringProp name="Argument.value">${__P(apiPoolUsers,0)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
           <elementProp name="apiProcessOrders" elementType="Argument">
             <stringProp name="Argument.name">apiProcessOrders</stringProp>
-            <stringProp name="Argument.value">${__P(apiProcessOrders,5)}</stringProp>
+            <stringProp name="Argument.value">${__P(apiProcessOrders,1)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
           <elementProp name="bamboo_build_number" elementType="Argument">
@@ -259,11 +264,6 @@
             <stringProp name="Argument.value">${__P(browseProductGridPercentage,0)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
-          <elementProp name="cache_indicator" elementType="Argument">
-            <stringProp name="Argument.name">cache_indicator</stringProp>
-            <stringProp name="Argument.value">${__P(cache_indicator,0)}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-          </elementProp>
           <elementProp name="categories_count" elementType="Argument">
             <stringProp name="Argument.name">categories_count</stringProp>
             <stringProp name="Argument.value">${__P(categories_count,100)}</stringProp>
@@ -306,7 +306,7 @@
           </elementProp>
           <elementProp name="customers_page_size" elementType="Argument">
             <stringProp name="Argument.name">customers_page_size</stringProp>
-            <stringProp name="Argument.value">${__P(customers_page_size,20)}</stringProp>
+            <stringProp name="Argument.value">${__P(customers_page_size,100)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
           <elementProp name="dashboard_enabled" elementType="Argument">
@@ -314,6 +314,11 @@
             <stringProp name="Argument.value">${__P(dashboard_enabled,0)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
+          <elementProp name="deadLocksPoolUsers" elementType="Argument">
+            <stringProp name="Argument.name">deadLocksPoolUsers</stringProp>
+            <stringProp name="Argument.value">${__P(deadLocksPoolUsers,1)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
           <elementProp name="exportCustomersPercentage" elementType="Argument">
             <stringProp name="Argument.name">exportCustomersPercentage</stringProp>
             <stringProp name="Argument.value">${__P(exportCustomersPercentage,0)}</stringProp>
@@ -359,11 +364,6 @@
             <stringProp name="Argument.value">${__P(orders_page_size,20)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
-          <elementProp name="othersPoolUsers" elementType="Argument">
-            <stringProp name="Argument.name">othersPoolUsers</stringProp>
-            <stringProp name="Argument.value">${__P(othersPoolUsers,0)}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-          </elementProp>
           <elementProp name="productCompareDelay" elementType="Argument">
             <stringProp name="Argument.name">productCompareDelay</stringProp>
             <stringProp name="Argument.value">${__P(productCompareDelay,0)}</stringProp>
@@ -1746,246 +1746,6 @@ idsList.add(vars.get("customer_id"));</stringProp>
       </hashTree>
     </hashTree>
   
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Cache" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/cache.jmx</stringProp>
-</TestFragmentController>
-    <hashTree>
-      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller: Disable cache type?" enabled="true">
-        <stringProp name="IfController.condition">"${cache_indicator}" == "1" || "${cache_indicator}" == "2"</stringProp>
-        <boolProp name="IfController.evaluateAll">false</boolProp>
-      </IfController>
-      <hashTree>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: resolve cache types" enabled="true">
-          <stringProp name="BeanShellSampler.query">// Default to disable all cache types
-vars.put("cache_types", "config,layout,block_html,collections,reflection,db_ddl,eav,config_integration,full_page,translate,config_webservice,config_integration_api");
-
-if ("${cache_indicator}" == "1") {
-	// Only disable Full Page Cache
-	vars.put("cache_types", "full_page");
-}
-</stringProp>
-          <stringProp name="BeanShellSampler.filename"/>
-          <stringProp name="BeanShellSampler.parameters"/>
-          <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - HTTP Request: Admin - Disable Specific Cache Types" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-            <collectionProp name="Arguments.arguments">
-              <elementProp name="form_key" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">${admin_form_key}</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">form_key</stringProp>
-              </elementProp>
-              <elementProp name="massaction_prepare_key" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">types</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">massaction_prepare_key</stringProp>
-              </elementProp>
-              <elementProp name="types" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">${cache_types}</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">types</stringProp>
-              </elementProp>
-            </collectionProp>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"/>
-          <stringProp name="HTTPSampler.port"/>
-          <stringProp name="HTTPSampler.connect_timeout"/>
-          <stringProp name="HTTPSampler.response_timeout"/>
-          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"/>
-          <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/massDisable</stringProp>
-          <stringProp name="HTTPSampler.method">POST</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">true</boolProp>
-          <boolProp name="HTTPSampler.monitor">false</boolProp>
-          <stringProp name="HTTPSampler.embedded_url_re"/>
-        </HTTPSamplerProxy>
-        <hashTree/>
-      </hashTree>
-      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller - Cache Validation - All Enabled" enabled="true">
-        <stringProp name="IfController.condition">"${cache_indicator}" == "0"</stringProp>
-        <boolProp name="IfController.evaluateAll">false</boolProp>
-      </IfController>
-      <hashTree>
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - HTTP Request - Cache Validation - All Enabled" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-            <collectionProp name="Arguments.arguments">
-              <elementProp name="form_key" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">${admin_form_key}</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">form_key</stringProp>
-                <stringProp name="Argument.desc">true</stringProp>
-              </elementProp>
-            </collectionProp>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"/>
-          <stringProp name="HTTPSampler.port"/>
-          <stringProp name="HTTPSampler.connect_timeout"/>
-          <stringProp name="HTTPSampler.response_timeout"/>
-          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"/>
-          <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">true</boolProp>
-          <boolProp name="HTTPSampler.monitor">false</boolProp>
-          <stringProp name="HTTPSampler.embedded_url_re"/>
-        </HTTPSamplerProxy>
-        <hashTree>
-          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion - Cache Validation - All Enabled" enabled="true">
-            <collectionProp name="Asserion.test_strings">
-              <stringProp name="860336383">TRANSLATE(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="1466502763">CONFIG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-1659688004">LAYOUT_GENERAL_CACHE_TAG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-21423984">BLOCK_HTML(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="593884002">COLLECTION_DATA(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-751452301">EAV(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="1611481748">FPC(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="846147458">DB_DDL(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-534412103">INTEGRATION(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-72935653">INTEGRATION_API_CONFIG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="330643820">WEBSERVICE(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-479894558">REFLECTION(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-            </collectionProp>
-            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-            <boolProp name="Assertion.assume_success">false</boolProp>
-            <intProp name="Assertion.test_type">2</intProp>
-          </ResponseAssertion>
-          <hashTree/>
-        </hashTree>
-      </hashTree>
-      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller - Cache Validation - Only FPC Disabled" enabled="true">
-        <stringProp name="IfController.condition">"${cache_indicator}" == "1"</stringProp>
-        <boolProp name="IfController.evaluateAll">false</boolProp>
-      </IfController>
-      <hashTree>
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - HTTP Request - Cache Validation - Only FPC Disabled" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-            <collectionProp name="Arguments.arguments">
-              <elementProp name="form_key" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">${admin_form_key}</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">form_key</stringProp>
-                <stringProp name="Argument.desc">true</stringProp>
-              </elementProp>
-            </collectionProp>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"/>
-          <stringProp name="HTTPSampler.port"/>
-          <stringProp name="HTTPSampler.connect_timeout"/>
-          <stringProp name="HTTPSampler.response_timeout"/>
-          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"/>
-          <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">true</boolProp>
-          <boolProp name="HTTPSampler.monitor">false</boolProp>
-          <stringProp name="HTTPSampler.embedded_url_re"/>
-        </HTTPSamplerProxy>
-        <hashTree>
-          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion - Cache Validation - All Disabled" enabled="true">
-            <collectionProp name="Asserion.test_strings">
-              <stringProp name="860336383">TRANSLATE(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="1466502763">CONFIG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-1659688004">LAYOUT_GENERAL_CACHE_TAG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-21423984">BLOCK_HTML(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="593884002">COLLECTION_DATA(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-751452301">EAV(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-2075232047">FPC(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="846147458">DB_DDL(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-534412103">INTEGRATION(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-72935653">INTEGRATION_API_CONFIG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="330643820">WEBSERVICE(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-              <stringProp name="-479894558">REFLECTION(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
-            </collectionProp>
-            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-            <boolProp name="Assertion.assume_success">false</boolProp>
-            <intProp name="Assertion.test_type">2</intProp>
-          </ResponseAssertion>
-          <hashTree/>
-        </hashTree>
-      </hashTree>
-      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller - Cache Validation - All Disabled" enabled="true">
-        <stringProp name="IfController.condition">"${cache_indicator}" == "2"</stringProp>
-        <boolProp name="IfController.evaluateAll">false</boolProp>
-      </IfController>
-      <hashTree>
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - HTTP Request - Cache Validation - All Disabled" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-            <collectionProp name="Arguments.arguments">
-              <elementProp name="form_key" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">${admin_form_key}</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">form_key</stringProp>
-                <stringProp name="Argument.desc">true</stringProp>
-              </elementProp>
-            </collectionProp>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"/>
-          <stringProp name="HTTPSampler.port"/>
-          <stringProp name="HTTPSampler.connect_timeout"/>
-          <stringProp name="HTTPSampler.response_timeout"/>
-          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"/>
-          <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">true</boolProp>
-          <boolProp name="HTTPSampler.monitor">false</boolProp>
-          <stringProp name="HTTPSampler.embedded_url_re"/>
-        </HTTPSamplerProxy>
-        <hashTree>
-          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion - Cache Validation - All Disabled" enabled="true">
-            <collectionProp name="Asserion.test_strings">
-              <stringProp name="409065414">TRANSLATE(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="2020354010">CONFIG(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="-402279255">LAYOUT_GENERAL_CACHE_TAG(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="-1155702187">BLOCK_HTML(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="738976195">COLLECTION_DATA(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="1983223762">EAV(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="-2075232047">FPC(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="-30791261">DB_DDL(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="121535308">INTEGRATION(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="1542403370">INTEGRATION_API_CONFIG(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="1168465145">WEBSERVICE(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-              <stringProp name="1811579203">REFLECTION(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
-            </collectionProp>
-            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-            <boolProp name="Assertion.assume_success">false</boolProp>
-            <intProp name="Assertion.test_type">2</intProp>
-          </ResponseAssertion>
-          <hashTree/>
-        </hashTree>
-      </hashTree>
-    </hashTree>
-  
     <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Validate properties and count users" enabled="true">
       <stringProp name="BeanShellSampler.query">Boolean stopTestOnError (String error) {
     log.error(error);
@@ -2151,11 +1911,11 @@ if (props.get("category_names_list") == null) {
             <stringProp name="ThreadGroup.delay"/>
         <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
         <hashTree>
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Catalog Browsing By Guest" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Catalog Browsing By Customer" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${browseCatalogByGuestPercentage}</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${browseCatalogByCustomerPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -2176,7 +1936,539 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Catalog Browsing By Guest");
+                vars.put("testLabel", "Catalog Browsing By Customer");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies">
+        <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
+          <stringProp name="Cookie.value">30</stringProp>
+          <stringProp name="Cookie.domain">${host}</stringProp>
+          <stringProp name="Cookie.path">/</stringProp>
+          <boolProp name="Cookie.secure">false</boolProp>
+          <longProp name="Cookie.expires">0</longProp>
+          <boolProp name="Cookie.path_specified">true</boolProp>
+          <boolProp name="Cookie.domain_specified">true</boolProp>
+        </elementProp>
+        <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
+          <stringProp name="Cookie.value">${form_key}</stringProp>
+          <stringProp name="Cookie.domain">${host}</stringProp>
+          <stringProp name="Cookie.path">${base_path}</stringProp>
+          <boolProp name="Cookie.secure">false</boolProp>
+          <longProp name="Cookie.expires">0</longProp>
+          <boolProp name="Cookie.path_specified">true</boolProp>
+          <boolProp name="Cookie.domain_specified">true</boolProp>
+        </elementProp>
+      </collectionProp>
+      <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
+        <stringProp name="BeanShellSampler.query">
+import java.util.Random;
+
+Random random = new Random();
+if (${seedForRandom} &gt; 0) {
+    random.setSeed(${seedForRandom} + ${__threadNum});
+}
+
+vars.putObject("randomIntGenerator", random);
+        </stringProp>
+        <stringProp name="BeanShellSampler.filename"/>
+        <stringProp name="BeanShellSampler.parameters"/>
+        <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+      </BeanShellSampler>
+      <hashTree/>
+    
+      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Category Data" enabled="true">
+        <stringProp name="BeanShellSampler.query">
+import java.util.Random;
+
+Random random = vars.getObject("randomIntGenerator");
+number = random.nextInt(props.get("category_url_keys_list").size());
+
+vars.put("category_url_key", props.get("category_url_keys_list").get(number));
+vars.put("category_name", props.get("category_names_list").get(number));
+        </stringProp>
+        <stringProp name="BeanShellSampler.filename"/>
+        <stringProp name="BeanShellSampler.parameters"/>
+        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/extract_category_setup.jmx</stringProp></BeanShellSampler>
+      <hashTree/>
+    
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_customer_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+customerUserList = props.get("customer_emails_list");
+customerUser = customerUserList.poll();
+if (customerUser == null) {
+  SampleResult.setResponseMessage("customernUser list is empty");
+  SampleResult.setResponseData("customerUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("customer_email", customerUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${customer_email}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${customer_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="send" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">send</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">addressId</stringProp>
+        <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">addressId</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="sections" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sections</stringProp>
+          </elementProp>
+          <elementProp name="update_section_id" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">false</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">update_section_id</stringProp>
+          </elementProp>
+          <elementProp name="_" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    </HTTPSamplerProxy>
+    <hashTree/>
+  
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">6</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">category_id</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1191417111">^[0-9]+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">category_id</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
+      <boolProp name="LoopController.continue_forever">true</boolProp>
+      <stringProp name="LoopController.loops">2</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
+    <hashTree>
+      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+        <stringProp name="CounterConfig.start">1</stringProp>
+        <stringProp name="CounterConfig.end"/>
+        <stringProp name="CounterConfig.incr">1</stringProp>
+        <stringProp name="CounterConfig.name">_counter</stringProp>
+        <stringProp name="CounterConfig.format"/>
+        <boolProp name="CounterConfig.per_user">true</boolProp>
+        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
+      </CounterConfig>
+      <hashTree/>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
+      <stringProp name="BeanShellSampler.query">
+import java.util.Random;
+
+Random random = vars.getObject("randomIntGenerator");
+number = random.nextInt(props.get("simple_products_list").size());
+product = props.get("simple_products_list").get(number);
+
+vars.put("product_url_key", product.get("url_key"));
+vars.put("product_id", product.get("id"));
+vars.put("product_name", product.get("title"));
+vars.put("product_uenc", product.get("uenc"));
+vars.put("product_sku", product.get("sku"));
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
+    <hashTree/>
+  
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
+        <hashTree>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                    <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+            </ResponseAssertion>
+            <hashTree/>
+        </hashTree>
+    </hashTree>
+  
+    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
+      <boolProp name="LoopController.continue_forever">true</boolProp>
+      <stringProp name="LoopController.loops">1</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
+    <hashTree>
+      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+        <stringProp name="CounterConfig.start">1</stringProp>
+        <stringProp name="CounterConfig.end"/>
+        <stringProp name="CounterConfig.incr">1</stringProp>
+        <stringProp name="CounterConfig.name">_counter</stringProp>
+        <stringProp name="CounterConfig.format"/>
+        <boolProp name="CounterConfig.per_user">true</boolProp>
+        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
+      </CounterConfig>
+      <hashTree/>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
+      <stringProp name="BeanShellSampler.query">
+import java.util.Random;
+
+Random random = vars.getObject("randomIntGenerator");
+number = random.nextInt(props.get("configurable_products_list").size());
+product = props.get("configurable_products_list").get(number);
+
+vars.put("product_url_key", product.get("url_key"));
+vars.put("product_id", product.get("id"));
+vars.put("product_name", product.get("title"));
+vars.put("product_uenc", product.get("uenc"));
+vars.put("product_sku", product.get("sku"));
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
+    <hashTree/>
+  
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
+        <hashTree>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                    <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+            </ResponseAssertion>
+            <hashTree/>
+        </hashTree>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1723813687">You are signed out.</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+customerUserList = props.get("customer_emails_list");
+customerUserList.add(vars.get("customer_email"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Catalog Browsing By Guest" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${browseCatalogByGuestPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Catalog Browsing By Guest");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
@@ -2867,7 +3159,7 @@ if (testLabel
       <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract filter link from layered navigation" enabled="true">
         <stringProp name="XPathExtractor.default"/>
         <stringProp name="XPathExtractor.refname">attribute_1_filter_url</stringProp>
-        <stringProp name="XPathExtractor.xpathQuery">((//div[@class="filter-options-content"])[1]//li[@class="item"]//a)[${__javaScript(Math.floor(Math.random()*${attribute_1_options_count})+1)}]/@href</stringProp>
+        <stringProp name="XPathExtractor.xpathQuery">((//div[@class="filter-options-content"])[1]//li[@class="item"]//a)[1]/@href</stringProp>
         <boolProp name="XPathExtractor.validate">false</boolProp>
         <boolProp name="XPathExtractor.tolerant">true</boolProp>
         <boolProp name="XPathExtractor.namespace">false</boolProp>
@@ -2938,7 +3230,7 @@ if (testLabel
         <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract filter link from layered navigation" enabled="true">
           <stringProp name="XPathExtractor.default"/>
           <stringProp name="XPathExtractor.refname">attribute_2_filter_url</stringProp>
-          <stringProp name="XPathExtractor.xpathQuery">((//div[@class="filter-options-content"])[2]//li[@class="item"]//a)[${__javaScript(Math.floor(Math.random()*${attribute_2_options_count})+1)}]/@href</stringProp>
+          <stringProp name="XPathExtractor.xpathQuery">((//div[@class="filter-options-content"])[2]//li[@class="item"]//a)[1]/@href</stringProp>
           <boolProp name="XPathExtractor.validate">false</boolProp>
           <boolProp name="XPathExtractor.tolerant">true</boolProp>
           <boolProp name="XPathExtractor.namespace">false</boolProp>
@@ -3228,7 +3520,7 @@ if (testLabel
       <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract attribute value" enabled="true">
         <stringProp name="XPathExtractor.default"/>
         <stringProp name="XPathExtractor.refname">attribute_value</stringProp>
-        <stringProp name="XPathExtractor.xpathQuery">((//select[@class="multiselect"])[last()]/option)[${__javaScript(Math.floor(Math.random()*${attribute_options_count})+1)}]/@value</stringProp>
+        <stringProp name="XPathExtractor.xpathQuery">((//select[@class="multiselect"])[last()]/option)[1]/@value</stringProp>
         <boolProp name="XPathExtractor.validate">false</boolProp>
         <boolProp name="XPathExtractor.tolerant">true</boolProp>
         <boolProp name="XPathExtractor.namespace">false</boolProp>
@@ -4260,44 +4552,31 @@ vars.putObject("randomIntGenerator", random);
       </BeanShellSampler>
       <hashTree/>
     
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
     <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
       <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_customer_email.jmx</stringProp>
-      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
-
-String siterator = vars.get("customer_emails_index");
-int iterator;
-if(siterator == null){
-    iterator = 0;
-    vars.put("customer_emails_index", "0");
-} else {
-    iterator = Integer.parseInt(siterator);
-    iterator ++;
-    vars.put("customer_emails_index", iterator.toString());
-}
-
-emails_list = props.get("customer_emails_list");
-
-threadsNumber = ctx.getThreadGroup().getNumThreads();
-emailsCount = emails_list.size();
-if (threadsNumber &gt; emailsCount) {
-    log.error(" There are not enough customers for this scenario.");
-} else {
-    clusterLength = Math.round(emailsCount / threadsNumber);
-    threadNum = ctx.getThreadNum();
-    emails_index = clusterLength * threadNum + iterator;
-    maxLimit = clusterLength * (threadNum + 1);
-    if (emails_index &gt;= maxLimit) {
-        iterator = 0;
-        emails_index = clusterLength * threadNum + iterator;
-        vars.put("customer_emails_index", iterator.toString());
-    }
+      <stringProp name="BeanShellSampler.query">
+customerUserList = props.get("customer_emails_list");
+customerUser = customerUserList.poll();
+if (customerUser == null) {
+  SampleResult.setResponseMessage("customernUser list is empty");
+  SampleResult.setResponseData("customerUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
 }
-vars.put("customer_email", emails_list.get(emails_index));</stringProp>
+vars.put("customer_email", customerUser);
+      </stringProp>
       <stringProp name="BeanShellSampler.filename"/>
       <stringProp name="BeanShellSampler.parameters"/>
       <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
     </BeanShellSampler>
     <hashTree/>
+  </hashTree>
   
     <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
@@ -4488,7 +4767,7 @@ vars.put("product_sku", product.get("sku"));
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
     <hashTree/>
   
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product View" enabled="true">
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
                 <collectionProp name="Arguments.arguments"/>
             </elementProp>
@@ -4519,7 +4798,7 @@ vars.put("product_sku", product.get("sku"));
             <hashTree/>
         </hashTree>
     
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product Add To Wishlist" enabled="true">
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Wishlist" enabled="true">
         <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
           <collectionProp name="Arguments.arguments">
             <elementProp name="form_key" elementType="HTTPArgument">
@@ -4582,7 +4861,7 @@ vars.put("product_sku", product.get("sku"));
         <hashTree/>
       </hashTree>
   
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Wishlist Section" enabled="true">
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Wishlist Section ${_counter}" enabled="true">
         <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
           <collectionProp name="Arguments.arguments">
             <elementProp name="sections" elementType="HTTPArgument">
@@ -4656,7 +4935,7 @@ vars.put("product_sku", product.get("sku"));
         <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
       </CounterConfig>
       <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Clear Wishlist" enabled="true">
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Clear Wishlist ${counter}" enabled="true">
         <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
           <collectionProp name="Arguments.arguments">
             <elementProp name="form_key" elementType="HTTPArgument">
@@ -4723,7 +5002,18 @@ vars.put("product_sku", product.get("sku"));
         <intProp name="Assertion.test_type">2</intProp>
       </ResponseAssertion>
       <hashTree/>
-    </hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+customerUserList = props.get("customer_emails_list");
+customerUserList.add(vars.get("customer_email"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
   </hashTree>
 
   
@@ -6522,44 +6812,31 @@ vars.put("category_name", props.get("category_names_list").get(number));
       <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/extract_category_setup.jmx</stringProp></BeanShellSampler>
       <hashTree/>
     
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
     <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
       <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_customer_email.jmx</stringProp>
-      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
-
-String siterator = vars.get("customer_emails_index");
-int iterator;
-if(siterator == null){
-    iterator = 0;
-    vars.put("customer_emails_index", "0");
-} else {
-    iterator = Integer.parseInt(siterator);
-    iterator ++;
-    vars.put("customer_emails_index", iterator.toString());
-}
-
-emails_list = props.get("customer_emails_list");
-
-threadsNumber = ctx.getThreadGroup().getNumThreads();
-emailsCount = emails_list.size();
-if (threadsNumber &gt; emailsCount) {
-    log.error(" There are not enough customers for this scenario.");
-} else {
-    clusterLength = Math.round(emailsCount / threadsNumber);
-    threadNum = ctx.getThreadNum();
-    emails_index = clusterLength * threadNum + iterator;
-    maxLimit = clusterLength * (threadNum + 1);
-    if (emails_index &gt;= maxLimit) {
-        iterator = 0;
-        emails_index = clusterLength * threadNum + iterator;
-        vars.put("customer_emails_index", iterator.toString());
-    }
+      <stringProp name="BeanShellSampler.query">
+customerUserList = props.get("customer_emails_list");
+customerUser = customerUserList.poll();
+if (customerUser == null) {
+  SampleResult.setResponseMessage("customernUser list is empty");
+  SampleResult.setResponseData("customerUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
 }
-vars.put("customer_email", emails_list.get(emails_index));</stringProp>
+vars.put("customer_email", customerUser);
+      </stringProp>
       <stringProp name="BeanShellSampler.filename"/>
       <stringProp name="BeanShellSampler.parameters"/>
       <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
     </BeanShellSampler>
     <hashTree/>
+  </hashTree>
   
       <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
         <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
@@ -7742,32 +8019,26 @@ if(curSampler.getName().contains("Checkout success")) {
 </stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/customer_checkout/checkout_clear_cookie.jmx</stringProp></BeanShellPostProcessor>
     <hashTree/>
+  
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+customerUserList = props.get("customer_emails_list");
+customerUserList.add(vars.get("customer_email"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
   </hashTree>
   </hashTree>
 
-  </hashTree>
-
-    
-        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Admin Pool" enabled="true">
-            <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
-            <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
-                <boolProp name="LoopController.continue_forever">false</boolProp>
-                <stringProp name="LoopController.loops">${loops}</stringProp>
-            </elementProp>
-            <stringProp name="ThreadGroup.num_threads">${adminPoolUsers}</stringProp>
-            <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
-            <longProp name="ThreadGroup.start_time">1505803944000</longProp>
-            <longProp name="ThreadGroup.end_time">1505803944000</longProp>
-            <boolProp name="ThreadGroup.scheduler">false</boolProp>
-            <stringProp name="ThreadGroup.duration"/>
-            <stringProp name="ThreadGroup.delay"/>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
-        <hashTree>
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Edit Product" enabled="true">
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Product Review By Customer" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${adminProductEditingPercentage}</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${reviewByCustomerPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -7788,71 +8059,82 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Admin Edit Product");
+                vars.put("testLabel", "Product Review By Customer");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
         <hashTree/>
     
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies">
+        <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
+          <stringProp name="Cookie.value">30</stringProp>
+          <stringProp name="Cookie.domain">${host}</stringProp>
+          <stringProp name="Cookie.path">/</stringProp>
+          <boolProp name="Cookie.secure">false</boolProp>
+          <longProp name="Cookie.expires">0</longProp>
+          <boolProp name="Cookie.path_specified">true</boolProp>
+          <boolProp name="Cookie.domain_specified">true</boolProp>
+        </elementProp>
+        <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
+          <stringProp name="Cookie.value">${form_key}</stringProp>
+          <stringProp name="Cookie.domain">${host}</stringProp>
+          <stringProp name="Cookie.path">${base_path}</stringProp>
+          <boolProp name="Cookie.secure">false</boolProp>
+          <longProp name="Cookie.expires">0</longProp>
+          <boolProp name="Cookie.path_specified">true</boolProp>
+          <boolProp name="Cookie.domain_specified">true</boolProp>
+        </elementProp>
+      </collectionProp>
+      <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
+        <stringProp name="BeanShellSampler.query">
+import java.util.Random;
 
-	   currentFormKey = getFormKeyFromResponse();
+Random random = new Random();
+if (${seedForRandom} &gt; 0) {
+    random.setSeed(${seedForRandom} + ${__threadNum});
+}
 
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
+vars.putObject("randomIntGenerator", random);
         </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
-        <hashTree/>
+        <stringProp name="BeanShellSampler.filename"/>
+        <stringProp name="BeanShellSampler.parameters"/>
+        <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+      </BeanShellSampler>
+      <hashTree/>
     
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_customer_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+customerUserList = props.get("customer_emails_list");
+customerUser = customerUserList.poll();
+if (customerUser == null) {
+  SampleResult.setResponseMessage("customernUser list is empty");
+  SampleResult.setResponseData("customerUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("customer_email", customerUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
     <hashTree/>
+  </hashTree>
   
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
       </elementProp>
@@ -7862,7 +8144,7 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -7870,28 +8152,87 @@ if (testLabel
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+          <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">2</intProp>
       </ResponseAssertion>
       <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${customer_email}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${customer_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="send" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">send</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
         <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.refname">addressId</stringProp>
+        <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
         <stringProp name="RegexExtractor.template">$1$</stringProp>
         <stringProp name="RegexExtractor.default"/>
         <stringProp name="RegexExtractor.match_number">1</stringProp>
       </RegexExtractor>
       <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
         <collectionProp name="Asserion.test_strings">
           <stringProp name="2845929">^.+$</stringProp>
         </collectionProp>
@@ -7899,41 +8240,164 @@ if (testLabel
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">1</intProp>
         <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
+        <stringProp name="Scope.variable">addressId</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
+          <elementProp name="sections" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
+            <stringProp name="Argument.name">sections</stringProp>
+          </elementProp>
+          <elementProp name="update_section_id" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">false</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">update_section_id</stringProp>
+          </elementProp>
+          <elementProp name="_" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_</stringProp>
           </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    </HTTPSamplerProxy>
+    <hashTree/>
+  
+    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Review Simple Products" enabled="true">
+      <boolProp name="LoopController.continue_forever">true</boolProp>
+      <stringProp name="LoopController.loops">1</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
+    <hashTree>
+      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+        <stringProp name="CounterConfig.start">1</stringProp>
+        <stringProp name="CounterConfig.end"/>
+        <stringProp name="CounterConfig.incr">1</stringProp>
+        <stringProp name="CounterConfig.name">_counter</stringProp>
+        <stringProp name="CounterConfig.format"/>
+        <boolProp name="CounterConfig.per_user">true</boolProp>
+        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
+      </CounterConfig>
+      <hashTree/>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
+      <stringProp name="BeanShellSampler.query">
+import java.util.Random;
+
+Random random = vars.getObject("randomIntGenerator");
+number = random.nextInt(props.get("simple_products_list").size());
+product = props.get("simple_products_list").get(number);
+
+vars.put("product_url_key", product.get("url_key"));
+vars.put("product_id", product.get("id"));
+vars.put("product_name", product.get("title"));
+vars.put("product_uenc", product.get("uenc"));
+vars.put("product_sku", product.get("sku"));
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
+    <hashTree/>
+  
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
+        <hashTree>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                    <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+            </ResponseAssertion>
+            <hashTree/>
+        </hashTree>
+    
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 1 Rate and Review" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
           <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.value">${form_key}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
             <stringProp name="Argument.name">form_key</stringProp>
           </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
+          <elementProp name="ratings[1]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.value">3</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
+            <stringProp name="Argument.name">ratings[1]</stringProp>
           </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
+          <elementProp name="validate_rating" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
+            <stringProp name="Argument.name">validate_rating</stringProp>
+          </elementProp>
+          <elementProp name="nickname" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">FirstName</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">nickname</stringProp>
+          </elementProp>
+          <elementProp name="title" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">Some Review Title</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">title</stringProp>
+          </elementProp>
+          <elementProp name="detail" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">Some Review Text</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">detail</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -7943,14646 +8407,815 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}review/product/post/id/${product_id}</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_review/product_review.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.default"/>
-            <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
-        <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1606201635">HTTP/1.1 200 OK</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_headers</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">16</intProp>
+      </ResponseAssertion>
+      <hashTree/>
     </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Review Section" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="sections" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">review,messages</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sections</stringProp>
+          </elementProp>
+          <elementProp name="update_section_id" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">false</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">update_section_id</stringProp>
+          </elementProp>
+          <elementProp name="_" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_review/load_review.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree/>
+  
+    <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Product Rating and Review - Pause" enabled="true">
+      <intProp name="ActionProcessor.action">1</intProp>
+      <intProp name="ActionProcessor.target">0</intProp>
+      <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${reviewDelay}*1000))}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_review/product_review_pause.jmx</stringProp></TestAction>
+    <hashTree/>
   </hashTree>
   
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Edit Product" enabled="true"/>
-              <hashTree>
-                <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
-                  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_product/admin_edit_product_updated.jmx</stringProp>
-                  <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
-    import java.util.HashMap;
-
-try {
-    simpleCount = props.get("simple_products_list").size();
-    configCount = props.get("configurable_products_list").size();
-    productCount = 0;
-    if (simpleCount &gt; configCount) {
-    	productCount = configCount;
-    } else {
-    	productCount = simpleCount;
-    }
-    int threadsNumber = ctx.getThreadGroup().getNumThreads();
-    if (threadsNumber == 0) {
-    	threadsNumber = 1;
-    }
-    //Current thread number starts from 0
-    currentThreadNum = ctx.getThreadNum();
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1723813687">You are signed out.</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+customerUserList = props.get("customer_emails_list");
+customerUserList.add(vars.get("customer_email"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
 
-    String siterator = vars.get("threadIterator_" + currentThreadNum.toString());
-    iterator = 0;
-    if(siterator == null){
-    	vars.put("threadIterator_" + currentThreadNum.toString() , "0");
-    } else {
-    	iterator = Integer.parseInt(siterator);
-    	iterator ++;
-    	vars.put("threadIterator_" + currentThreadNum.toString() , iterator.toString());
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Add To Cart By Customer" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${addToCartByCustomerPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
     }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Add To Cart By Customer");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies">
+        <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
+          <stringProp name="Cookie.value">30</stringProp>
+          <stringProp name="Cookie.domain">${host}</stringProp>
+          <stringProp name="Cookie.path">/</stringProp>
+          <boolProp name="Cookie.secure">false</boolProp>
+          <longProp name="Cookie.expires">0</longProp>
+          <boolProp name="Cookie.path_specified">true</boolProp>
+          <boolProp name="Cookie.domain_specified">true</boolProp>
+        </elementProp>
+        <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
+          <stringProp name="Cookie.value">${form_key}</stringProp>
+          <stringProp name="Cookie.domain">${host}</stringProp>
+          <stringProp name="Cookie.path">${base_path}</stringProp>
+          <boolProp name="Cookie.secure">false</boolProp>
+          <longProp name="Cookie.expires">0</longProp>
+          <boolProp name="Cookie.path_specified">true</boolProp>
+          <boolProp name="Cookie.domain_specified">true</boolProp>
+        </elementProp>
+      </collectionProp>
+      <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
+        <stringProp name="BeanShellSampler.query">
+import java.util.Random;
 
-    //Number of products for one thread
-    productClusterLength = productCount / threadsNumber;
+Random random = new Random();
+if (${seedForRandom} &gt; 0) {
+    random.setSeed(${seedForRandom} + ${__threadNum});
+}
 
-    if (iterator &gt;= productClusterLength) {
-    	vars.put("threadIterator_" + currentThreadNum.toString(), "0");
-    	iterator = 0;
-    }
+vars.putObject("randomIntGenerator", random);
+        </stringProp>
+        <stringProp name="BeanShellSampler.filename"/>
+        <stringProp name="BeanShellSampler.parameters"/>
+        <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+      </BeanShellSampler>
+      <hashTree/>
+    
+      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
+        <stringProp name="BeanShellSampler.query">
+vars.put("totalProductsAdded", "0");
+        </stringProp>
+        <stringProp name="BeanShellSampler.filename"/>
+        <stringProp name="BeanShellSampler.parameters"/>
+        <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+      </BeanShellSampler>
+      <hashTree/>
+    
+      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Category Data" enabled="true">
+        <stringProp name="BeanShellSampler.query">
+import java.util.Random;
 
-    //Index of the current product from the cluster
-    i = productClusterLength * currentThreadNum + iterator;
+Random random = vars.getObject("randomIntGenerator");
+number = random.nextInt(props.get("category_url_keys_list").size());
 
-    //ids of simple and configurable products to edit
-    vars.put("simple_product_id", props.get("simple_products_list").get(i).get("id"));
-    vars.put("configurable_product_id", props.get("configurable_products_list").get(i).get("id"));
+vars.put("category_url_key", props.get("category_url_keys_list").get(number));
+vars.put("category_name", props.get("category_names_list").get(number));
+        </stringProp>
+        <stringProp name="BeanShellSampler.filename"/>
+        <stringProp name="BeanShellSampler.parameters"/>
+        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/extract_category_setup.jmx</stringProp></BeanShellSampler>
+      <hashTree/>
+    
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_customer_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+customerUserList = props.get("customer_emails_list");
+customerUser = customerUserList.poll();
+if (customerUser == null) {
+  SampleResult.setResponseMessage("customernUser list is empty");
+  SampleResult.setResponseData("customerUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("customer_email", customerUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${customer_email}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${customer_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="send" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">send</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">addressId</stringProp>
+        <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">addressId</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="sections" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sections</stringProp>
+          </elementProp>
+          <elementProp name="update_section_id" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">false</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">update_section_id</stringProp>
+          </elementProp>
+          <elementProp name="_" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    </HTTPSamplerProxy>
+    <hashTree/>
+  
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">6</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">category_id</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1191417111">^[0-9]+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">category_id</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Cart" enabled="true">
+      <boolProp name="LoopController.continue_forever">true</boolProp>
+      <stringProp name="LoopController.loops">2</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
+    <hashTree>
+      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+        <stringProp name="CounterConfig.start">1</stringProp>
+        <stringProp name="CounterConfig.end"/>
+        <stringProp name="CounterConfig.incr">1</stringProp>
+        <stringProp name="CounterConfig.name">_counter</stringProp>
+        <stringProp name="CounterConfig.format"/>
+        <boolProp name="CounterConfig.per_user">true</boolProp>
+        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
+      </CounterConfig>
+      <hashTree/>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
+      <stringProp name="BeanShellSampler.query">
+import java.util.Random;
 
-    //id of related product
-    do {
-    	relatedIndex = (int)(Math.random() * props.get("simple_products_list").size());
-    } while(i == relatedIndex);
-    vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id"));
-    } catch (Exception ex) {
-    log.info("Script execution failed", ex);
-}</stringProp>
-                  <stringProp name="BeanShellSampler.filename"/>
-                  <stringProp name="BeanShellSampler.parameters"/>
-                  <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-                </BeanShellSampler>
-                <hashTree/>
-                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product" enabled="true">
-                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                    <collectionProp name="Arguments.arguments"/>
-                  </elementProp>
-                  <stringProp name="HTTPSampler.domain"/>
-                  <stringProp name="HTTPSampler.port"/>
-                  <stringProp name="HTTPSampler.connect_timeout"/>
-                  <stringProp name="HTTPSampler.response_timeout"/>
-                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-                  <stringProp name="HTTPSampler.contentEncoding"/>
-                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${simple_product_id}/</stringProp>
-                  <stringProp name="HTTPSampler.method">GET</stringProp>
-                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-                  <boolProp name="HTTPSampler.monitor">false</boolProp>
-                  <stringProp name="HTTPSampler.embedded_url_re"/>
-                </HTTPSamplerProxy>
-                <hashTree>
-                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                    <collectionProp name="Asserion.test_strings">
-                      <stringProp name="1355179215">Product</stringProp>
-                    </collectionProp>
-                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                    <boolProp name="Assertion.assume_success">false</boolProp>
-                    <intProp name="Assertion.test_type">16</intProp>
-                  </ResponseAssertion>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">simple_product_name</stringProp>
-                    <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">1</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">simple_product_sku</stringProp>
-                    <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">1</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">simple_product_category_id</stringProp>
-                    <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)".</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">1</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                </hashTree>
-                <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set updated values" enabled="true">
-                  <stringProp name="TestPlan.comments">Passing arguments between threads</stringProp>
-                  <stringProp name="BeanShellSampler.query">//Additional category to be added
+Random random = vars.getObject("randomIntGenerator");
+number = random.nextInt(props.get("simple_products_list").size());
+product = props.get("simple_products_list").get(number);
 
-    int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
-    if (categoryId &gt; 4) {
-        categoryId = categoryId - 1;
-    } else {
-        categoryId = categoryId + 1;
-    }
-    vars.put("category_additional", categoryId.toString());
-    //New price
-    vars.put("price_new", "9999");
-    //New special price
-    vars.put("special_price_new", "8888");
-    //New quantity
-    vars.put("quantity_new", "100600");</stringProp>
-                  <stringProp name="BeanShellSampler.filename"/>
-                  <stringProp name="BeanShellSampler.parameters"/>
-                  <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-                </BeanShellSampler>
-                <hashTree/>
-                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Validate" enabled="true">
-                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                    <collectionProp name="Arguments.arguments">
-                      <elementProp name="ajax" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">true</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">ajax</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="isAjax" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">true</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">isAjax</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="form_key" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${admin_form_key}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">form_key</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[name]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_name}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[name]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[sku]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_sku}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[sku]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[price]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${price_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[price]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">2</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${quantity_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[weight]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1.0000</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[weight]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[description]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[description]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[status]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[status]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[configurable_variations]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[image]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[image]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[small_image]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[small_image]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[thumbnail]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[thumbnail]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[url_key]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_name}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[url_key]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_title]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_title]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_description]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_description]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[website_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[website_ids][]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_price]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${special_price_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_price]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_from_date]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_from_date]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_to_date]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_to_date]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[cost]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[cost]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${quantity_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${quantity_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">10000</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design_from]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design_to]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[page_layout]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[page_layout]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[options_container]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">container2</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[options_container]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                    </collectionProp>
-                  </elementProp>
-                  <stringProp name="HTTPSampler.domain"/>
-                  <stringProp name="HTTPSampler.port"/>
-                  <stringProp name="HTTPSampler.connect_timeout"/>
-                  <stringProp name="HTTPSampler.response_timeout"/>
-                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-                  <stringProp name="HTTPSampler.contentEncoding"/>
-                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${simple_product_id}/?isAjax=true</stringProp>
-                  <stringProp name="HTTPSampler.method">POST</stringProp>
-                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-                  <boolProp name="HTTPSampler.monitor">false</boolProp>
-                  <stringProp name="HTTPSampler.embedded_url_re"/>
-                </HTTPSamplerProxy>
-                <hashTree>
-                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                    <collectionProp name="Asserion.test_strings">
-                      <stringProp name="1853918323">{"error":false}</stringProp>
-                    </collectionProp>
-                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                    <boolProp name="Assertion.assume_success">false</boolProp>
-                    <intProp name="Assertion.test_type">2</intProp>
-                  </ResponseAssertion>
-                  <hashTree/>
-                </hashTree>
-                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Save" enabled="true">
-                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                    <collectionProp name="Arguments.arguments">
-                      <elementProp name="ajax" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">true</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">ajax</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="isAjax" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">true</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">isAjax</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="form_key" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${admin_form_key}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">form_key</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[name]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_name}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[name]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[sku]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_sku}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[sku]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[price]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${price_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[price]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">2</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${quantity_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[weight]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1.0000</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[weight]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${category_additional}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
-                      </elementProp>
-                      <elementProp name="product[description]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[description]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[status]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[status]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[configurable_variations]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[image]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[image]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[small_image]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[small_image]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[thumbnail]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[thumbnail]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[url_key]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_name}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[url_key]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_title]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_title]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_description]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_description]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[website_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[website_ids][]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_price]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${special_price_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_price]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_from_date]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_from_date]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_to_date]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_to_date]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[cost]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[cost]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${quantity_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${quantity_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">10000</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design_from]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design_to]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[page_layout]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[page_layout]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[options_container]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">container2</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[options_container]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                    </collectionProp>
-                  </elementProp>
-                  <stringProp name="HTTPSampler.domain"/>
-                  <stringProp name="HTTPSampler.port"/>
-                  <stringProp name="HTTPSampler.connect_timeout"/>
-                  <stringProp name="HTTPSampler.response_timeout"/>
-                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-                  <stringProp name="HTTPSampler.contentEncoding"/>
-                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${simple_product_id}/back/edit/active_tab/product-details/</stringProp>
-                  <stringProp name="HTTPSampler.method">POST</stringProp>
-                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-                  <boolProp name="HTTPSampler.monitor">false</boolProp>
-                  <stringProp name="HTTPSampler.embedded_url_re"/>
-                </HTTPSamplerProxy>
-                <hashTree>
-                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                    <collectionProp name="Asserion.test_strings">
-                      <stringProp name="-583471546">You saved the product</stringProp>
-                    </collectionProp>
-                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                    <boolProp name="Assertion.assume_success">false</boolProp>
-                    <intProp name="Assertion.test_type">2</intProp>
-                  </ResponseAssertion>
-                  <hashTree/>
-                </hashTree>
-                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product" enabled="true">
-                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                    <collectionProp name="Arguments.arguments"/>
-                  </elementProp>
-                  <stringProp name="HTTPSampler.domain"/>
-                  <stringProp name="HTTPSampler.port"/>
-                  <stringProp name="HTTPSampler.connect_timeout"/>
-                  <stringProp name="HTTPSampler.response_timeout"/>
-                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-                  <stringProp name="HTTPSampler.contentEncoding"/>
-                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${configurable_product_id}/</stringProp>
-                  <stringProp name="HTTPSampler.method">GET</stringProp>
-                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-                  <boolProp name="HTTPSampler.monitor">false</boolProp>
-                  <stringProp name="HTTPSampler.embedded_url_re"/>
-                </HTTPSamplerProxy>
-                <hashTree>
-                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                    <collectionProp name="Asserion.test_strings">
-                      <stringProp name="1355179215">Product</stringProp>
-                    </collectionProp>
-                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                    <boolProp name="Assertion.assume_success">false</boolProp>
-                    <intProp name="Assertion.test_type">16</intProp>
-                  </ResponseAssertion>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">configurable_product_name</stringProp>
-                    <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">1</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">configurable_product_sku</stringProp>
-                    <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">1</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">configurable_product_category_id</stringProp>
-                    <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)"</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">1</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable attribute id" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">configurable_attribute_id</stringProp>
-                    <stringProp name="RegexExtractor.regex">,"configurable_variation":"([^'"]+)",</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">1</stringProp>
-                    <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable matrix" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">configurable_matrix</stringProp>
-                    <stringProp name="RegexExtractor.regex">"configurable-matrix":(\[.*?\])</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">1</stringProp>
-                    <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract associated products ids" enabled="true">
-                    <stringProp name="VAR">associated_products_ids</stringProp>
-                    <stringProp name="JSONPATH">$.[*].id</stringProp>
-                    <stringProp name="DEFAULT"/>
-                    <stringProp name="VARIABLE">configurable_matrix</stringProp>
-                    <stringProp name="SUBJECT">VAR</stringProp>
-                  </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable product json" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">configurable_product_data</stringProp>
-                    <stringProp name="RegexExtractor.regex">(\{"product":.*?configurable_attributes_data.*?\})\s*&lt;</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">1</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract configurable attributes data" enabled="true">
-                    <stringProp name="VAR">configurable_attributes_data</stringProp>
-                    <stringProp name="JSONPATH">$.product.configurable_attributes_data</stringProp>
-                    <stringProp name="DEFAULT"/>
-                    <stringProp name="VARIABLE">configurable_product_data</stringProp>
-                    <stringProp name="SUBJECT">VAR</stringProp>
-                  </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute ids" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">configurable_attribute_ids</stringProp>
-                    <stringProp name="RegexExtractor.regex">"attribute_id":"(\d+)"</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">-1</stringProp>
-                    <stringProp name="Sample.scope">variable</stringProp>
-                    <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute codes" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">configurable_attribute_codes</stringProp>
-                    <stringProp name="RegexExtractor.regex">"code":"(\w+)"</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">-1</stringProp>
-                    <stringProp name="Sample.scope">variable</stringProp>
-                    <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute labels" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">configurable_attribute_labels</stringProp>
-                    <stringProp name="RegexExtractor.regex">"label":"(.*?)"</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">-1</stringProp>
-                    <stringProp name="Sample.scope">variable</stringProp>
-                    <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute values" enabled="true">
-                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                    <stringProp name="RegexExtractor.refname">configurable_attribute_values</stringProp>
-                    <stringProp name="RegexExtractor.regex">"values":(\{(?:\}|.*?\}\}))</stringProp>
-                    <stringProp name="RegexExtractor.template">$1$</stringProp>
-                    <stringProp name="RegexExtractor.default"/>
-                    <stringProp name="RegexExtractor.match_number">-1</stringProp>
-                    <stringProp name="Sample.scope">variable</stringProp>
-                    <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
-                  </RegexExtractor>
-                  <hashTree/>
-                </hashTree>
-                <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach configurable attribute id" enabled="true">
-                  <stringProp name="ForeachController.inputVal">configurable_attribute_ids</stringProp>
-                  <stringProp name="ForeachController.returnVal">configurable_attribute_id</stringProp>
-                  <boolProp name="ForeachController.useSeparator">true</boolProp>
-                </ForeachController>
-                <hashTree>
-                  <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
-                    <stringProp name="CounterConfig.start">1</stringProp>
-                    <stringProp name="CounterConfig.end">${configurable_attribute_ids_matchNr}</stringProp>
-                    <stringProp name="CounterConfig.incr">1</stringProp>
-                    <stringProp name="CounterConfig.name">attribute_counter</stringProp>
-                    <stringProp name="CounterConfig.format"/>
-                    <boolProp name="CounterConfig.per_user">true</boolProp>
-                    <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
-                  </CounterConfig>
-                  <hashTree/>
-                  <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Process configurable attribute values" enabled="true">
-                    <stringProp name="BeanShellSampler.query">return vars.get("configurable_attribute_values_" + vars.get("attribute_counter"));</stringProp>
-                    <stringProp name="BeanShellSampler.filename"/>
-                    <stringProp name="BeanShellSampler.parameters"/>
-                    <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-                  </BeanShellSampler>
-                  <hashTree>
-                    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Exctract attribute values" enabled="true">
-                      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                      <stringProp name="RegexExtractor.refname">attribute_${configurable_attribute_id}_values</stringProp>
-                      <stringProp name="RegexExtractor.regex">"value_index":"(\d+)"</stringProp>
-                      <stringProp name="RegexExtractor.template">$1$</stringProp>
-                      <stringProp name="RegexExtractor.default"/>
-                      <stringProp name="RegexExtractor.match_number">-1</stringProp>
-                      <stringProp name="Scope.variable">configurable_attribute_values_${attribute_counter}</stringProp>
-                    </RegexExtractor>
-                    <hashTree/>
-                  </hashTree>
-                </hashTree>
-                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Validate" enabled="true">
-                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                    <collectionProp name="Arguments.arguments">
-                      <elementProp name="isAjax" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">true</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">isAjax</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="form_key" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${admin_form_key}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">form_key</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[name]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_name}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[name]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[sku]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[sku]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[price]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${price_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[price]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">2</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[weight]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">3</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[weight]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${category_additional}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[description]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[description]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[status]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[status]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_title]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_title]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_description]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_description]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[website_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[website_ids][]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_price]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${special_price_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_price]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_from_date]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_from_date]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_to_date]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_to_date]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[cost]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[cost]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design_from]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design_to]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[page_layout]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[page_layout]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[options_container]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">container2</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[options_container]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[configurable_variation]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[url_key]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_name}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[url_key]</stringProp>
-                      </elementProp>
-                      <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
-                      </elementProp>
-                      <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
-                      </elementProp>
-                      <elementProp name="product[visibility]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">4</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[visibility]</stringProp>
-                      </elementProp>
-                      <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-                        <stringProp name="Argument.desc">true</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">50</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">configurable</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                    </collectionProp>
-                  </elementProp>
-                  <stringProp name="HTTPSampler.domain"/>
-                  <stringProp name="HTTPSampler.port"/>
-                  <stringProp name="HTTPSampler.connect_timeout"/>
-                  <stringProp name="HTTPSampler.response_timeout"/>
-                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-                  <stringProp name="HTTPSampler.contentEncoding"/>
-                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${configurable_product_id}/</stringProp>
-                  <stringProp name="HTTPSampler.method">POST</stringProp>
-                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-                  <boolProp name="HTTPSampler.monitor">false</boolProp>
-                  <stringProp name="HTTPSampler.embedded_url_re"/>
-                </HTTPSamplerProxy>
-                <hashTree>
-                  <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
-                    <boolProp name="resetInterpreter">false</boolProp>
-                    <stringProp name="parameters"/>
-                    <stringProp name="filename"/>
-                    <stringProp name="script">try {
-    	int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
-    	for (int i = 1; i &lt;= attributesCount; i++) {
-    		attributeId = vars.get("configurable_attribute_ids_" + i.toString());
-    		attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
-    		attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
-    		ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
-    		ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
-    		ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
-    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
-    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
-    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
-    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
-
-    		int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
-    		for (int j = 1; j &lt;= valuesCount; j++) {
-    			attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
-    			ctx.getCurrentSampler().addArgument(
-    				"product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
-    				"1"
-    			);
-    			ctx.getCurrentSampler().addArgument(
-    				"product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
-    				attributeValue
-    			);
-    		}
-    	}
-    	ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
-    } catch (Exception e) {
-        log.error("error???", e);
-    }</stringProp>
-                  </BeanShellPreProcessor>
-                  <hashTree/>
-                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                    <collectionProp name="Asserion.test_strings">
-                      <stringProp name="1853918323">{"error":false}</stringProp>
-                    </collectionProp>
-                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                    <boolProp name="Assertion.assume_success">false</boolProp>
-                    <intProp name="Assertion.test_type">2</intProp>
-                  </ResponseAssertion>
-                  <hashTree/>
-                </hashTree>
-                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Save" enabled="true">
-                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                    <collectionProp name="Arguments.arguments">
-                      <elementProp name="ajax" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">true</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">ajax</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="isAjax" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">true</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">isAjax</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="form_key" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${admin_form_key}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">form_key</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[name]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_name}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[name]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[sku]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[sku]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[price]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${price_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[price]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[tax_class_id]admin" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">2</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[tax_class_id]admin</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[weight]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">3</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[weight]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${category_additional}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[description]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[description]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[status]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[status]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_title]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_title]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[meta_description]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[meta_description]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[website_ids][]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[website_ids][]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_price]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${special_price_new}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_price]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_from_date]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_from_date]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[special_to_date]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[special_to_date]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[cost]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[cost]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">0</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design_from]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_design_to]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[page_layout]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value"/>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[page_layout]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[options_container]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">container2</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[options_container]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[configurable_variation]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[url_key]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">${configurable_product_name}</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[url_key]</stringProp>
-                      </elementProp>
-                      <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
-                      </elementProp>
-                      <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
-                      </elementProp>
-                      <elementProp name="product[visibility]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">4</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[visibility]</stringProp>
-                      </elementProp>
-                      <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">1</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-                        <stringProp name="Argument.desc">true</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">50</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                      <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
-                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                        <stringProp name="Argument.value">configurable</stringProp>
-                        <stringProp name="Argument.metadata">=</stringProp>
-                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                        <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
-                        <stringProp name="Argument.desc">false</stringProp>
-                      </elementProp>
-                    </collectionProp>
-                  </elementProp>
-                  <stringProp name="HTTPSampler.domain"/>
-                  <stringProp name="HTTPSampler.port"/>
-                  <stringProp name="HTTPSampler.connect_timeout"/>
-                  <stringProp name="HTTPSampler.response_timeout"/>
-                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-                  <stringProp name="HTTPSampler.contentEncoding"/>
-                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${configurable_product_id}/back/edit/active_tab/product-details/</stringProp>
-                  <stringProp name="HTTPSampler.method">POST</stringProp>
-                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-                  <boolProp name="HTTPSampler.monitor">false</boolProp>
-                  <stringProp name="HTTPSampler.embedded_url_re"/>
-                </HTTPSamplerProxy>
-                <hashTree>
-                  <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
-                    <boolProp name="resetInterpreter">false</boolProp>
-                    <stringProp name="parameters"/>
-                    <stringProp name="filename"/>
-                    <stringProp name="script">try {
-    	int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
-    	for (int i = 1; i &lt;= attributesCount; i++) {
-    		attributeId = vars.get("configurable_attribute_ids_" + i.toString());
-    		attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
-    		attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
-    		ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
-    		ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
-    		ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
-    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
-    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
-    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
-    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
-
-    		int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
-    		for (int j = 1; j &lt;= valuesCount; j++) {
-    			attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
-    			ctx.getCurrentSampler().addArgument(
-    				"product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
-    				"1"
-    			);
-    			ctx.getCurrentSampler().addArgument(
-    				"product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
-    				attributeValue
-    			);
-    		}
-    	}
-    	ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
-    } catch (Exception e) {
-        log.error("error???", e);
-    }</stringProp>
-                  </BeanShellPreProcessor>
-                  <hashTree/>
-                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                    <collectionProp name="Asserion.test_strings">
-                      <stringProp name="-583471546">You saved the product</stringProp>
-                    </collectionProp>
-                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                    <boolProp name="Assertion.assume_success">false</boolProp>
-                    <intProp name="Assertion.test_type">2</intProp>
-                    <stringProp name="TestPlan.comments"> if have trouble see messages-message-error </stringProp>
-                  </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-    </hashTree>
-  </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Create Product" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${adminProductCreationPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Admin Create Product");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
-
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
-        <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.default"/>
-            <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
-        <hashTree/>
-    </hashTree>
-  
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Related Product Id" enabled="true">
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/get_related_product_id.jmx</stringProp>
-      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
-import java.util.Random;
-Random random = new Random();
-if (${seedForRandom} &gt; 0) {
-    random.setSeed(${seedForRandom});
-}
-relatedIndex = random.nextInt(props.get("simple_products_list").size());
-vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id"));</stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    </BeanShellSampler>
-    <hashTree/>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Color Attribute Id" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <!-- add filter by base64 encoded value of "attribute_code=color" -->
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_attribute/index/filter/YXR0cmlidXRlX2NvZGU9Y29sb3I</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/get_color_attribute_id.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">color_id</stringProp>
-        <stringProp name="RegexExtractor.regex">product_attribute\/edit\/attribute_id\/([\d]+)\/" &gt;.*\s*(color).*</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
-      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
-import java.util.Random;
-Random random = new Random();
-if (${seedForRandom} &gt; 0) {
-    random.setSeed(${seedForRandom});
-}
-number = random.nextInt(props.get("simple_products_list").size());
-simpleList = props.get("simple_products_list").get(number);
-vars.put("simple_product_1_id", simpleList.get("id"));
-
-do {
-    number1 = random.nextInt(props.get("simple_products_list").size());
-} while(number == number1);
-simpleList = props.get("simple_products_list").get(number1);
-vars.put("simple_product_2_id", simpleList.get("id"));
-
-number2 = random.nextInt(props.get("configurable_products_list").size());
-configurableList = props.get("configurable_products_list").get(number2);
-vars.put("configurable_product_1_id", configurableList.get("id"));
-vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
-vars.put("configurable_product_1_name", configurableList.get("title"));
-
-//Additional category to be added
-//int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
-//vars.put("category_additional", (categoryId+1).toString());
-//New price
-vars.put("price_new", "9999");
-//New special price
-vars.put("special_price_new", "8888");
-//New quantity
-vars.put("quantity_new", "100600");</stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/setup.jmx</stringProp></BeanShellSampler>
-    <hashTree/>
-  
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Bundle Product" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/create_bundle_product.jmx</stringProp>
-</TestFragmentController>
-    <hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="1509986340">records found</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/bundle/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-144461265">New Product</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Validate" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="ajax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">ajax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">123</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">111</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1.0000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[weight]</stringProp>
-            </elementProp>
-            <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[category_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Full bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[description]</stringProp>
-            </elementProp>
-            <elementProp name="product[short_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[short_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[status]</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_variations]</stringProp>
-            </elementProp>
-            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
-            </elementProp>
-            <elementProp name="product[image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[image]</stringProp>
-            </elementProp>
-            <elementProp name="product[small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[small_image]</stringProp>
-            </elementProp>
-            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[thumbnail]</stringProp>
-            </elementProp>
-            <elementProp name="product[url_key]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[url_key]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_title]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[website_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_price]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_from_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_to_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[cost]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[cost]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">32000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">90</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">101</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">10000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-            </elementProp>
-            <elementProp name="product[page_layout]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[page_layout]</stringProp>
-            </elementProp>
-            <elementProp name="product[options_container]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">container2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options_container]</stringProp>
-            </elementProp>
-            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
-            </elementProp>
-            <elementProp name="product[shipment_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[shipment_type]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">option title one</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][title]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][option_id]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][delete]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">select</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][type]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][required]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][required]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][position]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][selection_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][selection_id]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][option_id]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][product_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][product_id]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][delete]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][selection_price_value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0.00</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][selection_price_value]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][selection_price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][selection_price_type]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][selection_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][selection_qty]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][selection_can_change_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][selection_can_change_qty]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][selection_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][selection_id]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][option_id]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][product_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][product_id]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][delete]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][selection_price_value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0.00</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][selection_price_value]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][selection_price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][selection_price_type]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][selection_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][selection_qty]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][selection_can_change_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][selection_can_change_qty]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][position]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">option title two</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][title]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][option_id]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][delete]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">select</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][type]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][required]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][required]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][position]</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][selection_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][selection_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][option_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][product_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][product_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][delete]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][selection_price_value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0.00</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][selection_price_value]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][selection_price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][selection_price_type]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][selection_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][selection_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][selection_can_change_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][selection_can_change_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][position]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][selection_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][selection_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][option_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][product_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][product_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][delete]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][selection_price_value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0.00</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][selection_price_value]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][selection_price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][selection_price_type]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][selection_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][selection_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][selection_can_change_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][selection_can_change_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][position]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="1853918323">{"error":false}</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Save" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="ajax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">ajax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">123</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">111</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1.0000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[weight]</stringProp>
-            </elementProp>
-            <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[category_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Full bundle product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[description]</stringProp>
-            </elementProp>
-            <elementProp name="product[short_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[short_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[status]</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_variations]</stringProp>
-            </elementProp>
-            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
-            </elementProp>
-            <elementProp name="product[image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[image]</stringProp>
-            </elementProp>
-            <elementProp name="product[small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[small_image]</stringProp>
-            </elementProp>
-            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[thumbnail]</stringProp>
-            </elementProp>
-            <elementProp name="product[url_key]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[url_key]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_title]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[website_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_price]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_from_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_to_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[cost]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[cost]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">32000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">90</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">101</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">10000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-            </elementProp>
-            <elementProp name="product[page_layout]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[page_layout]</stringProp>
-            </elementProp>
-            <elementProp name="product[options_container]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">container2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options_container]</stringProp>
-            </elementProp>
-            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
-            </elementProp>
-            <elementProp name="product[shipment_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[shipment_type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">option title one</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][title]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][option_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">select</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][required]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][required]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[0][position]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][selection_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][selection_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][option_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][product_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][product_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][selection_price_value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0.00</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][selection_price_value]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][selection_price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][selection_price_type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][selection_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][selection_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][selection_can_change_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][selection_can_change_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][0][position]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][selection_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][selection_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][option_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][product_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][product_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][selection_price_value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0.00</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][selection_price_value]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][selection_price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][selection_price_type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][selection_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][selection_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][selection_can_change_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][selection_can_change_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[0][1][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[0][1][position]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">option title two</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][title]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][option_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">select</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][required]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][required]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_options[1][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_options[1][position]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][selection_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][selection_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][option_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][product_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][product_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][selection_price_value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0.00</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][selection_price_value]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][selection_price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][selection_price_type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][selection_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][selection_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][selection_can_change_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][selection_can_change_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][0][position]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][selection_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][selection_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][option_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][option_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][product_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][product_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][selection_price_value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0.00</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][selection_price_value]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][selection_price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][selection_price_type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][selection_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][selection_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][selection_can_change_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][selection_can_change_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="bundle_selections[1][1][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">bundle_selections[1][1][position]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/bundle/back/edit/active_tab/product-details/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-583471546">You saved the product</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-1600986843">violation</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">6</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-    </hashTree>
-  
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Configurable Product" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/create_configurable_product.jmx</stringProp>
-</TestFragmentController>
-    <hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="1509986340">records found</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/configurable/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-144461265">New Product</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Options" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="options[0][attribute_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">options[0][attribute_id]</stringProp>
-              <stringProp name="Argument.value">${color_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="options[0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">options[0][id]</stringProp>
-              <stringProp name="Argument.value">PQFYFAT</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="options[0][is_new]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">options[0][is_new]</stringProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="options[0][label]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">options[0][label]</stringProp>
-              <stringProp name="Argument.value">green-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="options[0][value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">options[0][value]</stringProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="options[1][attribute_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${color_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">options[1][attribute_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="options[1][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">PQFYFAT1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">options[1][id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="options[1][is_new]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">options[1][is_new]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="options[1][label]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">red-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">options[1][label]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="options[1][value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">options[1][value]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_attribute/createOptions/?isAjax=true</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract first option" enabled="true">
-          <stringProp name="VAR">first_option</stringProp>
-          <stringProp name="JSONPATH">$.PQFYFAT</stringProp>
-          <stringProp name="DEFAULT"/>
-          <stringProp name="VARIABLE"/>
-          <stringProp name="SUBJECT">BODY</stringProp>
-        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-        <hashTree/>
-        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract second option" enabled="true">
-          <stringProp name="VAR">second_option</stringProp>
-          <stringProp name="JSONPATH">$.PQFYFAT1</stringProp>
-          <stringProp name="DEFAULT"/>
-          <stringProp name="VARIABLE"/>
-          <stringProp name="SUBJECT">BODY</stringProp>
-        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Validate" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="ajax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">ajax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="attribute_codes[0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">color</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">attribute_codes[0]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="attributes[0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${color_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">attributes[0]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][attributes]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Color:green ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][attributes]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][canEdit]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][canEdit]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][configurable_attribute]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">false</boolProp>
-              <stringProp name="Argument.value">{"color":"${first_option}"}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][configurable_attribute]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">green ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][name]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][newProduct]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][newProduct]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][price]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][price_currency]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">$</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][price_currency]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][price_string]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">$100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][price_string]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">150</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][record_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][record_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">green-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][sku]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][small_image]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][status]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][swatch_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][swatch_image]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][thumbnail]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][variationKey]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${first_option}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][variationKey]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">6</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][weight]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][attributes]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Color:red ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][attributes]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][canEdit]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][canEdit]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][configurable_attribute]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">false</boolProp>
-              <stringProp name="Argument.value">{"color":"${second_option}"}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][configurable_attribute]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">red ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][name]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][newProduct]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][newProduct]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][price]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][price_currency]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">$</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][price_currency]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][price_string]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">$100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][price_string]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">50</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][record_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][record_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">red ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][sku]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][small_image]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][status]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][swatch_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][swatch_image]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][thumbnail]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][variationKey]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${second_option}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][variationKey]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">6</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][weight]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[category_ids][0]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][attribute_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${color_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][attribute_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][code]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">color</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][code]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][label]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Color</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][label]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][position]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][values][${first_option}][include]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][values][${first_option}][include]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][values][${first_option}][value_index]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${first_option}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][values][${first_option}][value_index]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][values][${second_option}][include]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][values][${second_option}][include]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][values][${second_option}][value_index]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${second_option}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][values][${second_option}][value_index]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[description]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[gift_message_available]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[image]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[is_returnable]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[is_returnable]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Configurable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_description]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Configurable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Configurable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_title]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Configurable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[name]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[options_container]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">container2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options_container]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${price_new}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[price]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[short_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[short_description]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[sku]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[small_image]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[special_price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${special_price_new}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_price]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[status]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">10000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[thumbnail]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[url_key]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[url_key]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[visibility]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[visibility]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[website_ids][1]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="1853918323">{"error":false}</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Save" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="ajax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">ajax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="attribute_codes[0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">color</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">attribute_codes[0]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="attributes[0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${color_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">attributes[0]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][attributes]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Color:green ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][attributes]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][canEdit]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][canEdit]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][configurable_attribute]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">false</boolProp>
-              <stringProp name="Argument.value">{"color":"${first_option}"}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][configurable_attribute]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">green ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][newProduct]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][newProduct]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][price]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][price_currency]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">$</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][price_currency]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][price_string]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">$100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][price_string]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">150</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][record_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][record_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">green-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][small_image]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][status]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][swatch_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][swatch_image]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][thumbnail]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][variationKey]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${first_option}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][variationKey]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[0][weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">6</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[0][weight]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][attributes]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Color:red ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][attributes]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][canEdit]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][canEdit]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][configurable_attribute]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">false</boolProp>
-              <stringProp name="Argument.value">{"color":"${second_option}"}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][configurable_attribute]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">red ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][newProduct]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][newProduct]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][price]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][price_currency]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">$</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][price_currency]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][price_string]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">$100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][price_string]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">50</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][record_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][record_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">red ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][small_image]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][status]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][swatch_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][swatch_image]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][thumbnail]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][variationKey]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${second_option}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][variationKey]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="configurable-matrix[1][weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">6</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">configurable-matrix[1][weight]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[category_ids][0]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][attribute_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${color_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][attribute_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][code]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">color</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][code]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][label]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Color</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][label]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][position]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][values][${first_option}][include]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][values][${first_option}][include]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][values][${first_option}][value_index]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${first_option}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][values][${first_option}][value_index]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][values][${second_option}][include]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][values][${second_option}][include]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_attributes_data][${color_id}][values][${second_option}][value_index]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${second_option}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_attributes_data][${color_id}][values][${second_option}][value_index]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[description]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[gift_message_available]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[image]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[is_returnable]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[is_returnable]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Configurable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_description]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Configurable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Configurable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_title]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Configurable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options_container]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">container2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options_container]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${price_new}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[price]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[short_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[short_description]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[small_image]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[special_price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${special_price_new}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_price]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[status]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">10000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[thumbnail]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[url_key]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[url_key]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[visibility]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[visibility]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[website_ids][1]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/configurable/back/edit/active_tab/product-details/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-583471546">You saved the product</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-1600986843">violation</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">6</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-    </hashTree>
-  
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Downloadable Product" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/create_downloadable_product.jmx</stringProp>
-</TestFragmentController>
-    <hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="1509986340">records found</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/downloadable/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-144461265">New Product</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Original File" enabled="true">
-        <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
-          <collectionProp name="HTTPFileArgs.files">
-            <elementProp name="${files_folder}downloadable_original.txt" elementType="HTTPFileArg">
-              <stringProp name="File.path">${files_folder}downloadable_original.txt</stringProp>
-              <stringProp name="File.paramname">links</stringProp>
-              <stringProp name="File.mimetype">text/plain</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/links/?isAjax=true</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract original file" enabled="true">
-          <stringProp name="VAR">original_file</stringProp>
-          <stringProp name="JSONPATH">$.file</stringProp>
-          <stringProp name="DEFAULT"/>
-          <stringProp name="VARIABLE"/>
-          <stringProp name="SUBJECT">BODY</stringProp>
-        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Sample File" enabled="true">
-        <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
-          <collectionProp name="HTTPFileArgs.files">
-            <elementProp name="${files_folder}downloadable_sample.txt" elementType="HTTPFileArg">
-              <stringProp name="File.path">${files_folder}downloadable_sample.txt</stringProp>
-              <stringProp name="File.paramname">samples</stringProp>
-              <stringProp name="File.mimetype">text/plain</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/samples/?isAjax=true</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract sample file" enabled="true">
-          <stringProp name="VAR">sample_file</stringProp>
-          <stringProp name="JSONPATH">$.file</stringProp>
-          <stringProp name="DEFAULT"/>
-          <stringProp name="VARIABLE"/>
-          <stringProp name="SUBJECT">BODY</stringProp>
-        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Validate" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="ajax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">ajax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">123</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">111</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1.0000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[weight]</stringProp>
-            </elementProp>
-            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[category_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[description]</stringProp>
-            </elementProp>
-            <elementProp name="product[short_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[short_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[status]</stringProp>
-            </elementProp>
-            <elementProp name="product[image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[image]</stringProp>
-            </elementProp>
-            <elementProp name="product[small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[small_image]</stringProp>
-            </elementProp>
-            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[thumbnail]</stringProp>
-            </elementProp>
-            <elementProp name="product[url_key]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[url_key]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_title]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[website_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_price]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_from_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_to_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[cost]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[cost]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">32000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">90</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">101</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">10000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-            </elementProp>
-            <elementProp name="product[page_layout]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[page_layout]</stringProp>
-            </elementProp>
-            <elementProp name="product[options_container]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">container2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options_container]</stringProp>
-            </elementProp>
-            <elementProp name="is_downloadable" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">on</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">is_downloadable</stringProp>
-            </elementProp>
-            <elementProp name="product[links_title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Links</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[links_title]</stringProp>
-            </elementProp>
-            <elementProp name="product[links_purchased_separately]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[links_purchased_separately]</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${original_file}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">downloadable_original.txt</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">13</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">new</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">120</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">file</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Original Link</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">file</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${sample_file}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">14</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">new</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Sample Link</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">file</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_variation]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/type/downloadable/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="1853918323">{"error":false}</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Save" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="ajax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">ajax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">123</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">111</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1.0000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[weight]</stringProp>
-            </elementProp>
-            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[category_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[description]</stringProp>
-            </elementProp>
-            <elementProp name="product[short_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[short_description]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[status]</stringProp>
-            </elementProp>
-            <elementProp name="product[image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[image]</stringProp>
-            </elementProp>
-            <elementProp name="product[small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[small_image]</stringProp>
-            </elementProp>
-            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[thumbnail]</stringProp>
-            </elementProp>
-            <elementProp name="product[url_key]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[url_key]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_title]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[website_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_price]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_from_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_to_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[cost]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[cost]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">32000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">90</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">101</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">10000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-            </elementProp>
-            <elementProp name="product[page_layout]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[page_layout]</stringProp>
-            </elementProp>
-            <elementProp name="product[options_container]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">container2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options_container]</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${original_file}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">downloadable_original.txt</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">13</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">new</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">120</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">file</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Original Link</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">file</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${sample_file}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">14</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">new</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Sample Link</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">file</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_variation]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/downloadable/back/edit/active_tab/product-details/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-583471546">You saved the product</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-1600986843">violation</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">6</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-    </hashTree>
-  
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Simple Product" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/create_simple_product.jmx</stringProp>
-</TestFragmentController>
-    <hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="1509986340">records found</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/simple/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-144461265">New Product</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Validate" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="ajax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">ajax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">123</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">111</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1.0000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[weight]</stringProp>
-            </elementProp>
-            <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[category_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Full simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[description]</stringProp>
-            </elementProp>
-            <elementProp name="product[short_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[short_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[status]</stringProp>
-            </elementProp>
-            <elementProp name="product[image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[image]</stringProp>
-            </elementProp>
-            <elementProp name="product[small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[small_image]</stringProp>
-            </elementProp>
-            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[thumbnail]</stringProp>
-            </elementProp>
-            <elementProp name="product[url_key]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[url_key]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_title]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[website_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_price]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_from_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_to_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[cost]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[cost]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">32000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">90</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">101</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">10000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-            </elementProp>
-            <elementProp name="product[page_layout]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[page_layout]</stringProp>
-            </elementProp>
-            <elementProp name="product[options_container]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">container2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options_container]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">select</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">drop_down</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Product Option Title One</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][title]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">drop_down</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">200</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">fixed</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">sku-one</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Row Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">250</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">text</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">field</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][price]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">fixed</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">sku-two</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Field Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][title]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">field</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_variation]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="1853918323">{"error":false}</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Save" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="ajax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">ajax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[name]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[name]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[sku]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">123</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">111</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1.0000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[weight]</stringProp>
-            </elementProp>
-            <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[category_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[description]</stringProp>
-            </elementProp>
-            <elementProp name="product[short_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[short_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[status]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[status]</stringProp>
-            </elementProp>
-            <elementProp name="product[image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[image]</stringProp>
-            </elementProp>
-            <elementProp name="product[small_image]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[small_image]</stringProp>
-            </elementProp>
-            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[thumbnail]</stringProp>
-            </elementProp>
-            <elementProp name="product[url_key]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[url_key]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_title]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
-            </elementProp>
-            <elementProp name="product[meta_description]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[meta_description]</stringProp>
-            </elementProp>
-            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[website_ids][]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_price]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_from_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[special_to_date]</stringProp>
-            </elementProp>
-            <elementProp name="product[cost]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[cost]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">32000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">90</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">101</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">99</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">10000</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
-            </elementProp>
-            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
-            </elementProp>
-            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
-            </elementProp>
-            <elementProp name="product[page_layout]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[page_layout]</stringProp>
-            </elementProp>
-            <elementProp name="product[options_container]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">container2</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options_container]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">select</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">drop_down</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Product Option Title One</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][title]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">drop_down</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][type]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">200</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">fixed</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">sku-one</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Row Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
-              <stringProp name="Argument.desc">false</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">250</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">text</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">field</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][price]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">500</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][price]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">fixed</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">sku-two</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][sku]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][title]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Field Title</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][title]</stringProp>
-            </elementProp>
-            <elementProp name="product[options][2][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">field</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[options][2][type]</stringProp>
-            </elementProp>
-            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">4</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">product[configurable_variation]</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[related][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${related_product_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
-            </elementProp>
-            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/simple/back/edit/active_tab/product-details/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-583471546">You saved the product</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-1600986843">violation</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">6</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-    </hashTree>
-  </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Category Management" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${adminCategoryManagementPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Admin Category Management");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.default"/>
-            <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
-        <hashTree/>
-    </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Admin Category Management" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/setup_admin_category_management.jmx</stringProp>
-</GenericController>
-    <hashTree>
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Clear Admin Category Management properties" enabled="true">
-        <stringProp name="BeanShellSampler.query">props.remove("admin_category_ids_list");</stringProp>
-        <stringProp name="BeanShellSampler.filename"/>
-        <stringProp name="BeanShellSampler.parameters"/>
-        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-      </BeanShellSampler>
-      <hashTree/>
-      <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Get categories of last level" enabled="true"/>
-      <hashTree>
-        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-          <collectionProp name="HeaderManager.headers">
-            <elementProp name="" elementType="Header">
-              <stringProp name="Header.name">Content-Type</stringProp>
-              <stringProp name="Header.value">application/json</stringProp>
-            </elementProp>
-            <elementProp name="" elementType="Header">
-              <stringProp name="Header.name">Accept</stringProp>
-              <stringProp name="Header.value">*/*</stringProp>
-            </elementProp>
-          </collectionProp>
-        </HeaderManager>
-        <hashTree/>
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
-          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-            <collectionProp name="Arguments.arguments">
-              <elementProp name="" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-              </elementProp>
-            </collectionProp>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"/>
-          <stringProp name="HTTPSampler.port"/>
-          <stringProp name="HTTPSampler.connect_timeout"/>
-          <stringProp name="HTTPSampler.response_timeout"/>
-          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"/>
-          <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
-          <stringProp name="HTTPSampler.method">POST</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <boolProp name="HTTPSampler.monitor">false</boolProp>
-          <stringProp name="HTTPSampler.embedded_url_re"/>
-        </HTTPSamplerProxy>
-        <hashTree>
-          <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
-            <stringProp name="VAR">admin_token</stringProp>
-            <stringProp name="JSONPATH">$</stringProp>
-            <stringProp name="DEFAULT"/>
-            <stringProp name="VARIABLE"/>
-            <stringProp name="SUBJECT">BODY</stringProp>
-          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-          <hashTree/>
-          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
-            <collectionProp name="Asserion.test_strings">
-              <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
-            </collectionProp>
-            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-            <boolProp name="Assertion.assume_success">false</boolProp>
-            <intProp name="Assertion.test_type">1</intProp>
-            <stringProp name="Assertion.scope">variable</stringProp>
-            <stringProp name="Scope.variable">admin_token</stringProp>
-          </ResponseAssertion>
-          <hashTree/>
-        </hashTree>
-        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-          <collectionProp name="HeaderManager.headers">
-            <elementProp name="" elementType="Header">
-              <stringProp name="Header.name">Authorization</stringProp>
-              <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
-            </elementProp>
-          </collectionProp>
-        </HeaderManager>
-        <hashTree/>
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - API Get categories" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-            <collectionProp name="Arguments.arguments">
-              <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">children_count</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
-              </elementProp>
-              <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">0</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
-              </elementProp>
-              <elementProp name="searchCriteria[filterGroups][1][filters][0][field]" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">level</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][field]</stringProp>
-              </elementProp>
-              <elementProp name="searchCriteria[filterGroups][1][filters][0][value]" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">2</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][value]</stringProp>
-              </elementProp>
-              <elementProp name="searchCriteria[filterGroups][1][filters][0][conditionType]" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">gt</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][conditionType]</stringProp>
-              </elementProp>
-              <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                <stringProp name="Argument.value">${adminCategoryCount}</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
-              </elementProp>
-            </collectionProp>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"/>
-          <stringProp name="HTTPSampler.port"/>
-          <stringProp name="HTTPSampler.connect_timeout"/>
-          <stringProp name="HTTPSampler.response_timeout"/>
-          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"/>
-          <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories/list</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <boolProp name="HTTPSampler.monitor">false</boolProp>
-          <stringProp name="HTTPSampler.embedded_url_re"/>
-        </HTTPSamplerProxy>
-        <hashTree>
-          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.refname">category_list_id</stringProp>
-            <stringProp name="RegexExtractor.regex">\{\"id\":(\d+),</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.default"/>
-            <stringProp name="RegexExtractor.match_number">-1</stringProp>
-          </RegexExtractor>
-          <hashTree/>
-        </hashTree>
-        <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Category Id" enabled="true">
-          <stringProp name="ForeachController.inputVal">category_list_id</stringProp>
-          <stringProp name="ForeachController.returnVal">category_id</stringProp>
-          <boolProp name="ForeachController.useSeparator">true</boolProp>
-        </ForeachController>
-        <hashTree>
-          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Process categories ids" enabled="true">
-            <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
-
-adminCategoryIdsList = props.get("admin_category_ids_list");
-// If it is first iteration of cycle then recreate categories ids list
-if (adminCategoryIdsList == null) {
-    adminCategoryIdsList = new ArrayList();
-    props.put("admin_category_ids_list", adminCategoryIdsList);
-}
-adminCategoryIdsList.add(vars.get("category_id"));</stringProp>
-            <stringProp name="BeanShellSampler.filename"/>
-            <stringProp name="BeanShellSampler.parameters"/>
-            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-          </BeanShellSampler>
-          <hashTree/>
-        </hashTree>
-      </hashTree>
-    </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Category Management" enabled="true"/>
-    <hashTree>
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_category_management/admin_category_management.jmx</stringProp>
-        <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
-import java.util.ArrayList;
-import java.util.Random;
-Random random = new Random();
-if (${seedForRandom} &gt; 0) {
-random.setSeed(${seedForRandom});
-}
-number = random.nextInt(props.get("simple_products_list").size());
-simpleList = props.get("simple_products_list").get(number);
-vars.put("simple_product_1_url_key", simpleList.get("url_key"));
-vars.put("simple_product_1_name", simpleList.get("title"));
-vars.put("simple_product_1_id", simpleList.get("id"));
-
-do {
-number1 = random.nextInt(props.get("simple_products_list").size());
-} while(number == number1);
-simpleList = props.get("simple_products_list").get(number1);
-vars.put("simple_product_2_url_key", simpleList.get("url_key"));
-vars.put("simple_product_2_name", simpleList.get("title"));
-vars.put("simple_product_2_id", simpleList.get("id"));
-
-do {
-number2 = random.nextInt(props.get("simple_products_list").size());
-} while(number2 == number1 || number2 == number);
-simpleList = props.get("simple_products_list").get(number2);
-vars.put("simple_product_3_url_key", simpleList.get("url_key"));
-vars.put("simple_product_3_name", simpleList.get("title"));
-vars.put("simple_product_3_id", simpleList.get("id"));
-
-do {
-number3 = random.nextInt(props.get("simple_products_list").size());
-} while(number3 == number2 || number3 == number1 || number3 == number);
-simpleList = props.get("simple_products_list").get(number3);
-vars.put("simple_product_4_url_key", simpleList.get("url_key"));
-vars.put("simple_product_4_name", simpleList.get("title"));
-vars.put("simple_product_4_id", simpleList.get("id"));
-
-do {
-number4 = random.nextInt(props.get("simple_products_list").size());
-} while(number4 == number3 || number4 == number2 || number4 == number1 || number4 == number);
-simpleList = props.get("simple_products_list").get(number4);
-vars.put("simple_product_5_url_key", simpleList.get("url_key"));
-vars.put("simple_product_5_name", simpleList.get("title"));
-vars.put("simple_product_5_id", simpleList.get("id"));
-
-categoryIndex = random.nextInt(props.get("admin_category_ids_list").size());
-vars.put("parent_category_id", props.get("admin_category_ids_list").get(categoryIndex));
-do {
-categoryIndexNew = random.nextInt(props.get("admin_category_ids_list").size());
-} while(categoryIndex == categoryIndexNew);
-vars.put("new_parent_category_id", props.get("admin_category_ids_list").get(categoryIndexNew));</stringProp>
-        <stringProp name="BeanShellSampler.filename"/>
-        <stringProp name="BeanShellSampler.parameters"/>
-        <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-      </BeanShellSampler>
-      <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-          <collectionProp name="HeaderManager.headers">
-            <elementProp name="Accept-Language" elementType="Header">
-              <stringProp name="Header.name">Accept-Language</stringProp>
-              <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
-            </elementProp>
-            <elementProp name="Accept" elementType="Header">
-              <stringProp name="Header.name">Accept</stringProp>
-              <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
-            </elementProp>
-            <elementProp name="User-Agent" elementType="Header">
-              <stringProp name="Header.name">User-Agent</stringProp>
-              <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
-            </elementProp>
-            <elementProp name="Accept-Encoding" elementType="Header">
-              <stringProp name="Header.name">Accept-Encoding</stringProp>
-              <stringProp name="Header.value">gzip, deflate</stringProp>
-            </elementProp>
-          </collectionProp>
-        </HeaderManager>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-          <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select parent category" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${parent_category_id}/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-          <collectionProp name="HeaderManager.headers">
-            <elementProp name="Accept-Language" elementType="Header">
-              <stringProp name="Header.name">Accept-Language</stringProp>
-              <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
-            </elementProp>
-            <elementProp name="Accept" elementType="Header">
-              <stringProp name="Header.name">Accept</stringProp>
-              <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
-            </elementProp>
-            <elementProp name="User-Agent" elementType="Header">
-              <stringProp name="Header.name">User-Agent</stringProp>
-              <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
-            </elementProp>
-            <elementProp name="Accept-Encoding" elementType="Header">
-              <stringProp name="Header.name">Accept-Encoding</stringProp>
-              <stringProp name="Header.value">gzip, deflate</stringProp>
-            </elementProp>
-          </collectionProp>
-        </HeaderManager>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open new category page" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/add/store/0/parent/${parent_category_id}</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-1903925024">&lt;title&gt;New Category</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create category" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">id</stringProp>
-            </elementProp>
-            <elementProp name="parent" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${parent_category_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">parent</stringProp>
-            </elementProp>
-            <elementProp name="path" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">path</stringProp>
-            </elementProp>
-            <elementProp name="store_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">store_id</stringProp>
-            </elementProp>
-            <elementProp name="is_active" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">is_active</stringProp>
-            </elementProp>
-            <elementProp name="include_in_menu" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">include_in_menu</stringProp>
-            </elementProp>
-            <elementProp name="is_anchor" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">is_anchor</stringProp>
-            </elementProp>
-            <elementProp name="use_config[available_sort_by]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">use_config[available_sort_by]</stringProp>
-            </elementProp>
-            <elementProp name="use_config[default_sort_by]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">use_config[default_sort_by]</stringProp>
-            </elementProp>
-            <elementProp name="use_config[filter_price_range]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">use_config[filter_price_range]</stringProp>
-            </elementProp>
-            <elementProp name="use_default[url_key]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">false</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">use_default[url_key]</stringProp>
-            </elementProp>
-            <elementProp name="url_key_create_redirect" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">url_key_create_redirect</stringProp>
-            </elementProp>
-            <elementProp name="custom_use_parent_settings" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">custom_use_parent_settings</stringProp>
-            </elementProp>
-            <elementProp name="custom_apply_to_products" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">custom_apply_to_products</stringProp>
-            </elementProp>
-            <elementProp name="name" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Admin Category Management ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">name</stringProp>
-            </elementProp>
-            <elementProp name="url_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">admin-category-management-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">url_key</stringProp>
-            </elementProp>
-            <elementProp name="meta_title" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">meta_title</stringProp>
-            </elementProp>
-            <elementProp name="description" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">description</stringProp>
-            </elementProp>
-            <elementProp name="display_mode" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">PRODUCTS</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">display_mode</stringProp>
-            </elementProp>
-            <elementProp name="default_sort_by" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">position</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">default_sort_by</stringProp>
-            </elementProp>
-            <elementProp name="meta_keywords" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">meta_keywords</stringProp>
-            </elementProp>
-            <elementProp name="meta_description" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">meta_description</stringProp>
-            </elementProp>
-            <elementProp name="custom_layout_update" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">custom_layout_update</stringProp>
-            </elementProp>
-            <elementProp name="category_products" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">false</boolProp>
-              <stringProp name="Argument.value">{"${simple_product_1_id}":"","${simple_product_2_id}":"","${simple_product_3_id}":"","${simple_product_4_id}":"","${simple_product_5_id}":""}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">category_products</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/save/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">URL</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_id</stringProp>
-          <stringProp name="RegexExtractor.regex">/catalog/category/edit/id/(\d+)/</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_id</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select created category" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${admin_category_id}/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-          <collectionProp name="HeaderManager.headers">
-            <elementProp name="Accept-Language" elementType="Header">
-              <stringProp name="Header.name">Accept-Language</stringProp>
-              <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
-            </elementProp>
-            <elementProp name="Accept" elementType="Header">
-              <stringProp name="Header.name">Accept</stringProp>
-              <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
-            </elementProp>
-            <elementProp name="User-Agent" elementType="Header">
-              <stringProp name="Header.name">User-Agent</stringProp>
-              <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
-            </elementProp>
-            <elementProp name="Accept-Encoding" elementType="Header">
-              <stringProp name="Header.name">Accept-Encoding</stringProp>
-              <stringProp name="Header.value">gzip, deflate</stringProp>
-            </elementProp>
-          </collectionProp>
-        </HeaderManager>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category row id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_entity_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"entity_id":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category attribute set id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_attribute_set_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"attribute_set_id":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category parent Id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_parent_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"parent_id":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category created at" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_created_at</stringProp>
-          <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category updated at" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_updated_at</stringProp>
-          <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category path" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_path</stringProp>
-          <stringProp name="RegexExtractor.regex">"entity_id":(.+)"path":"([^\"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$2$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category level" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_level</stringProp>
-          <stringProp name="RegexExtractor.regex">"level":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category name" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_name</stringProp>
-          <stringProp name="RegexExtractor.regex">"entity_id":(.+)"name":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$2$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url key" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_url_key</stringProp>
-          <stringProp name="RegexExtractor.regex">"url_key":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url path" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_category_url_path</stringProp>
-          <stringProp name="RegexExtractor.regex">"url_path":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category row id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_entity_id</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category attribute set id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_attribute_set_id</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category parent id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_parent_id</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category created at" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_created_at</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category updated at" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_updated_at</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category path" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="59022110">^[\d\\\/]+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_path</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category level" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_level</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category name" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_name</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url key" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_url_key</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url path" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_category_url_path</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert products added" enabled="true">
-            <collectionProp name="Asserion.test_strings">
-              <stringProp name="417284990">${simple_product_1_name}</stringProp>
-              <stringProp name="1304788671">${simple_product_2_name}</stringProp>
-              <stringProp name="-2102674944">${simple_product_3_name}</stringProp>
-              <stringProp name="-1215171263">${simple_product_4_name}</stringProp>
-              <stringProp name="-327667582">${simple_product_5_name}</stringProp>
-            </collectionProp>
-            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-            <boolProp name="Assertion.assume_success">false</boolProp>
-            <intProp name="Assertion.test_type">2</intProp>
-          </ResponseAssertion>
-          <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Move category" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_category_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">id</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-            </elementProp>
-            <elementProp name="point" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">append</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">point</stringProp>
-            </elementProp>
-            <elementProp name="pid" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${new_parent_category_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">pid</stringProp>
-            </elementProp>
-            <elementProp name="paid" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${parent_category_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">paid</stringProp>
-            </elementProp>
-            <elementProp name="aid" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">aid</stringProp>
-            </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/move/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete category" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/delete/id/${admin_category_id}/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category deleted" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="1277069529">You deleted the category.</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
-        <intProp name="ActionProcessor.action">1</intProp>
-        <intProp name="ActionProcessor.target">0</intProp>
-        <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCategoryManagementDelay}*1000))}</stringProp>
-      </TestAction>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Promotion Rules" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${adminPromotionRulesPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Admin Promotion Rules");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
-
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
-        <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.default"/>
-            <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
-        <hashTree/>
-    </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Promotions Management" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_promotions_management/admin_promotions_management.jmx</stringProp>
-</TestFragmentController>
-    <hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/new</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New Conditional" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.desc">true</stringProp>
-            </elementProp>
-            <elementProp name="id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1--1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">id</stringProp>
-            </elementProp>
-            <elementProp name="type" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address|base_subtotal</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">type</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/newConditionHtml/form/sales_rule_formrule_conditions_fieldset_/form_namespace/sales_rule_form</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="name" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Rule Name ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">name</stringProp>
-            </elementProp>
-            <elementProp name="is_active" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">is_active</stringProp>
-            </elementProp>
-            <elementProp name="use_auto_generation" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">use_auto_generation</stringProp>
-            </elementProp>
-            <elementProp name="is_rss" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">is_rss</stringProp>
-            </elementProp>
-            <elementProp name="apply_to_shipping" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">apply_to_shipping</stringProp>
-            </elementProp>
-            <elementProp name="stop_rules_processing" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">stop_rules_processing</stringProp>
-            </elementProp>
-            <elementProp name="coupon_code" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">coupon_code</stringProp>
-            </elementProp>
-            <elementProp name="uses_per_coupon" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">uses_per_coupon</stringProp>
-            </elementProp>
-            <elementProp name="uses_per_customer" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">uses_per_customer</stringProp>
-            </elementProp>
-            <elementProp name="sort_order" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">sort_order</stringProp>
-            </elementProp>
-            <elementProp name="discount_amount" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">5</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">discount_amount</stringProp>
-            </elementProp>
-            <elementProp name="discount_qty" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">discount_qty</stringProp>
-            </elementProp>
-            <elementProp name="discount_step" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">discount_step</stringProp>
-            </elementProp>
-            <elementProp name="reward_points_delta" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">reward_points_delta</stringProp>
-            </elementProp>
-            <elementProp name="store_labels[0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">store_labels[0]</stringProp>
-            </elementProp>
-            <elementProp name="description" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Rule Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">description</stringProp>
-            </elementProp>
-            <elementProp name="coupon_type" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">coupon_type</stringProp>
-            </elementProp>
-            <elementProp name="simple_action" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">cart_fixed</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">simple_action</stringProp>
-            </elementProp>
-            <elementProp name="website_ids[0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">website_ids[0]</stringProp>
-            </elementProp>
-            <elementProp name="customer_group_ids[0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer_group_ids[0]</stringProp>
-            </elementProp>
-            <elementProp name="from_date" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">from_date</stringProp>
-            </elementProp>
-            <elementProp name="to_date" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">to_date</stringProp>
-            </elementProp>
-            <elementProp name="rule[conditions][1][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Combine</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[conditions][1][type]</stringProp>
-            </elementProp>
-            <elementProp name="rule[conditions][1][aggregator]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">all</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[conditions][1][aggregator]</stringProp>
-            </elementProp>
-            <elementProp name="rule[conditions][1][value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[conditions][1][value]</stringProp>
-            </elementProp>
-            <elementProp name="rule[conditions][1--1][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[conditions][1--1][type]</stringProp>
-            </elementProp>
-            <elementProp name="rule[conditions][1--1][attribute]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">base_subtotal</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[conditions][1--1][attribute]</stringProp>
-            </elementProp>
-            <elementProp name="rule[conditions][1--1][operator]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&gt;=</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[conditions][1--1][operator]</stringProp>
-            </elementProp>
-            <elementProp name="rule[conditions][1--1][value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">100</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[conditions][1--1][value]</stringProp>
-            </elementProp>
-            <elementProp name="rule[conditions][1][new_chlid]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[conditions][1][new_chlid]</stringProp>
-            </elementProp>
-            <elementProp name="rule[actions][1][type]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Product\Combine</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[actions][1][type]</stringProp>
-            </elementProp>
-            <elementProp name="rule[actions][1][aggregator]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">all</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[actions][1][aggregator]</stringProp>
-            </elementProp>
-            <elementProp name="rule[actions][1][value]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[actions][1][value]</stringProp>
-            </elementProp>
-            <elementProp name="rule[actions][1][new_child]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">rule[actions][1][new_child]</stringProp>
-            </elementProp>
-            <elementProp name="store_labels[1]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">store_labels[1]</stringProp>
-            </elementProp>
-            <elementProp name="store_labels[2]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">store_labels[2]</stringProp>
-            </elementProp>
-            <elementProp name="related_banners" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">related_banners</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/save/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-396438583">You saved the rule.</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">16</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
-        <intProp name="ActionProcessor.action">1</intProp>
-        <intProp name="ActionProcessor.target">0</intProp>
-        <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminPromotionsManagementDelay}*1000))}</stringProp>
-      </TestAction>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Edit Order" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${adminEditOrderPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Admin Edit Order");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
-
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
-        <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.default"/>
-            <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
-        <hashTree/>
-    </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments"/>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="1204796042">Create New Order</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-  </hashTree>
-
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments">
-        <elementProp name="namespace" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">sales_order_grid</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">namespace</stringProp>
-        </elementProp>
-        <elementProp name="search" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value"/>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">search</stringProp>
-        </elementProp>
-        <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">true</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">filters[placeholder]</stringProp>
-        </elementProp>
-        <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">200</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">paging[pageSize]</stringProp>
-        </elementProp>
-        <elementProp name="paging[current]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">paging[current]</stringProp>
-        </elementProp>
-        <elementProp name="sorting[field]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">increment_id</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">sorting[field]</stringProp>
-        </elementProp>
-        <elementProp name="sorting[direction]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">desc</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">sorting[direction]</stringProp>
-        </elementProp>
-        <elementProp name="isAjax" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">true</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">isAjax</stringProp>
-        </elementProp>
-        <elementProp name="form_key" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${admin_form_key}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">form_key</stringProp>
-          <stringProp name="Argument.desc">false</stringProp>
-        </elementProp>
-        <elementProp name="filters[status]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">pending</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">filters[status]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="_" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">_</stringProp>
-        </elementProp>
-      </collectionProp>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="1637639774">totalRecords</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-  </hashTree>
-
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments">
-        <elementProp name="form_key" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${admin_form_key}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">form_key</stringProp>
-        </elementProp>
-        <elementProp name="namespace" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">sales_order_grid</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">namespace</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="search" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value"/>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">search</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">true</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">filters[placeholder]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">200</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">paging[pageSize]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="paging[current]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">paging[current]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="sorting[field]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">increment_id</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">sorting[field]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="sorting[direction]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">asc</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">sorting[direction]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="isAjax" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">true</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">isAjax</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="filters[status]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">pending</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">filters[status]</stringProp>
-        </elementProp>
-        <elementProp name="_" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">_</stringProp>
-        </elementProp>
-      </collectionProp>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
-<hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1637639774">totalRecords</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
-        <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">-1</stringProp>
-        <stringProp name="Scope.variable">simple_products</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">order_ids</stringProp>
-        <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">-1</stringProp>
-        <stringProp name="Scope.variable">simple_products</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-    </hashTree>
-
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
-        <stringProp name="BeanShellSampler.query">
-  import java.util.ArrayList;
-  import java.util.HashMap;
-  import org.apache.jmeter.protocol.http.util.Base64Encoder;
-  import java.util.Random;
-
-  // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
-  int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
-
-
-  int clusterLength;
-  int threadsNumber = ctx.getThreadGroup().getNumThreads();
-  if (threadsNumber == 0) {
-      //Number of orders for one thread
-      clusterLength = ordersCount;
-  } else {
-      clusterLength = Math.round(ordersCount / threadsNumber);
-      if (clusterLength == 0) {
-          clusterLength = 1;
-      }
-  }
-
-  //Current thread number starts from 0
-  int currentThreadNum = ctx.getThreadNum();
-
-  //Index of the current product from the cluster
-  Random random = new Random();
-  int iterator = random.nextInt(clusterLength);
-  if (iterator == 0) {
-  	iterator = 1;
-  }
-
-  int i = clusterLength * currentThreadNum + iterator;
-
-  orderNumber = vars.get("order_numbers_" + i.toString());
-  orderId = vars.get("order_ids_" + i.toString());
-  vars.put("order_number", orderNumber);
-  vars.put("order_id", orderId);
-
-  </stringProp>
-    <stringProp name="BeanShellSampler.filename"/>
-    <stringProp name="BeanShellSampler.parameters"/>
-    <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-  </BeanShellSampler>
-  <hashTree/>
-
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments"/>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="2103620713">#${order_number}</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
-      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-      <stringProp name="RegexExtractor.refname">order_status</stringProp>
-      <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
-      <stringProp name="RegexExtractor.template">$1$</stringProp>
-      <stringProp name="RegexExtractor.default"/>
-      <stringProp name="RegexExtractor.match_number">1</stringProp>
-      <stringProp name="Scope.variable">simple_products</stringProp>
-    </RegexExtractor>
-    <hashTree/>
-  </hashTree>
-
-    <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
-      <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
-      <boolProp name="IfController.evaluateAll">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Comment" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="history[status]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">pending</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">history[status]</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-          <elementProp name="history[comment]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">Some text</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">history[comment]</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/addComment/order_id/${order_id}/?isAjax=true</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_order/add_comment.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-2089278331">Not Notified</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments"/>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="-1233850814">Invoice Totals</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
-      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-      <stringProp name="RegexExtractor.refname">item_ids</stringProp>
-      <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
-      <stringProp name="RegexExtractor.template">$1$</stringProp>
-      <stringProp name="RegexExtractor.default"/>
-      <stringProp name="RegexExtractor.match_number">-1</stringProp>
-      <stringProp name="Scope.variable">simple_products</stringProp>
-    </RegexExtractor>
-    <hashTree/>
-  </hashTree>
-
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments">
-        <elementProp name="form_key" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${admin_form_key}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">form_key</stringProp>
-          <stringProp name="Argument.desc">false</stringProp>
-        </elementProp>
-        <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
-        </elementProp>
-        <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
-        </elementProp>
-        <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">Invoiced</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">invoice[comment_text]</stringProp>
-        </elementProp>
-      </collectionProp>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
-    <stringProp name="HTTPSampler.method">POST</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="1740524604">The invoice has been created</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-  </hashTree>
-
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Start" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/start/order_id/${order_id}/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_order/shipment_start.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="304100442">New Shipment</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Submit" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-          <elementProp name="shipment[items][${item_ids_1}]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">shipment[items][${item_ids_1}]</stringProp>
-          </elementProp>
-          <elementProp name="shipment[items][${item_ids_2}]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">shipment[items][${item_ids_2}]</stringProp>
-          </elementProp>
-          <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">Shipped</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">shipment[comment_text]</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_order/shipment_submit.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-2089453199">The shipment has been created</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-  </hashTree>
-  </hashTree>
-
-  </hashTree>
-
-    
-        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="CSR Pool" enabled="true">
-            <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
-            <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
-                <boolProp name="LoopController.continue_forever">false</boolProp>
-                <stringProp name="LoopController.loops">${loops}</stringProp>
-            </elementProp>
-            <stringProp name="ThreadGroup.num_threads">${csrPoolUsers}</stringProp>
-            <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
-            <longProp name="ThreadGroup.start_time">1505803944000</longProp>
-            <longProp name="ThreadGroup.end_time">1505803944000</longProp>
-            <boolProp name="ThreadGroup.scheduler">false</boolProp>
-            <stringProp name="ThreadGroup.duration"/>
-            <stringProp name="ThreadGroup.delay"/>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
-        <hashTree>
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Returns Management" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${adminReturnsManagementPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Admin Returns Management");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
-
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
-        <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.default"/>
-            <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
-        <hashTree/>
-    </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments"/>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="1204796042">Create New Order</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-  </hashTree>
-
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments">
-        <elementProp name="namespace" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">sales_order_grid</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">namespace</stringProp>
-        </elementProp>
-        <elementProp name="search" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value"/>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">search</stringProp>
-        </elementProp>
-        <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">true</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">filters[placeholder]</stringProp>
-        </elementProp>
-        <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">200</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">paging[pageSize]</stringProp>
-        </elementProp>
-        <elementProp name="paging[current]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">paging[current]</stringProp>
-        </elementProp>
-        <elementProp name="sorting[field]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">increment_id</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">sorting[field]</stringProp>
-        </elementProp>
-        <elementProp name="sorting[direction]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">desc</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">sorting[direction]</stringProp>
-        </elementProp>
-        <elementProp name="isAjax" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">true</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">isAjax</stringProp>
-        </elementProp>
-        <elementProp name="form_key" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${admin_form_key}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">form_key</stringProp>
-          <stringProp name="Argument.desc">false</stringProp>
-        </elementProp>
-        <elementProp name="filters[status]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">pending</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">filters[status]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="_" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">_</stringProp>
-        </elementProp>
-      </collectionProp>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="1637639774">totalRecords</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-  </hashTree>
-
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments">
-        <elementProp name="form_key" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${admin_form_key}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">form_key</stringProp>
-        </elementProp>
-        <elementProp name="namespace" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">sales_order_grid</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">namespace</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="search" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value"/>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">search</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">true</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">filters[placeholder]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">200</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">paging[pageSize]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="paging[current]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">paging[current]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="sorting[field]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">increment_id</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">sorting[field]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="sorting[direction]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">asc</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">sorting[direction]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="isAjax" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">true</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">isAjax</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="filters[status]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">pending</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">filters[status]</stringProp>
-        </elementProp>
-        <elementProp name="_" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">_</stringProp>
-        </elementProp>
-      </collectionProp>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
-<hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1637639774">totalRecords</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
-        <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">-1</stringProp>
-        <stringProp name="Scope.variable">simple_products</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">order_ids</stringProp>
-        <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">-1</stringProp>
-        <stringProp name="Scope.variable">simple_products</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-    </hashTree>
-
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
-        <stringProp name="BeanShellSampler.query">
-  import java.util.ArrayList;
-  import java.util.HashMap;
-  import org.apache.jmeter.protocol.http.util.Base64Encoder;
-  import java.util.Random;
-
-  // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
-  int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
-
-
-  int clusterLength;
-  int threadsNumber = ctx.getThreadGroup().getNumThreads();
-  if (threadsNumber == 0) {
-      //Number of orders for one thread
-      clusterLength = ordersCount;
-  } else {
-      clusterLength = Math.round(ordersCount / threadsNumber);
-      if (clusterLength == 0) {
-          clusterLength = 1;
-      }
-  }
-
-  //Current thread number starts from 0
-  int currentThreadNum = ctx.getThreadNum();
-
-  //Index of the current product from the cluster
-  Random random = new Random();
-  int iterator = random.nextInt(clusterLength);
-  if (iterator == 0) {
-  	iterator = 1;
-  }
-
-  int i = clusterLength * currentThreadNum + iterator;
-
-  orderNumber = vars.get("order_numbers_" + i.toString());
-  orderId = vars.get("order_ids_" + i.toString());
-  vars.put("order_number", orderNumber);
-  vars.put("order_id", orderId);
-
-  </stringProp>
-    <stringProp name="BeanShellSampler.filename"/>
-    <stringProp name="BeanShellSampler.parameters"/>
-    <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-  </BeanShellSampler>
-  <hashTree/>
-
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments"/>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="2103620713">#${order_number}</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
-      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-      <stringProp name="RegexExtractor.refname">order_status</stringProp>
-      <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
-      <stringProp name="RegexExtractor.template">$1$</stringProp>
-      <stringProp name="RegexExtractor.default"/>
-      <stringProp name="RegexExtractor.match_number">1</stringProp>
-      <stringProp name="Scope.variable">simple_products</stringProp>
-    </RegexExtractor>
-    <hashTree/>
-  </hashTree>
-
-    <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
-      <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
-      <boolProp name="IfController.evaluateAll">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
-    <hashTree>
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments"/>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="-1233850814">Invoice Totals</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
-      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-      <stringProp name="RegexExtractor.refname">item_ids</stringProp>
-      <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
-      <stringProp name="RegexExtractor.template">$1$</stringProp>
-      <stringProp name="RegexExtractor.default"/>
-      <stringProp name="RegexExtractor.match_number">-1</stringProp>
-      <stringProp name="Scope.variable">simple_products</stringProp>
-    </RegexExtractor>
-    <hashTree/>
-  </hashTree>
-
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments">
-        <elementProp name="form_key" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${admin_form_key}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">form_key</stringProp>
-          <stringProp name="Argument.desc">false</stringProp>
-        </elementProp>
-        <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
-        </elementProp>
-        <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
-        </elementProp>
-        <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">Invoiced</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">invoice[comment_text]</stringProp>
-        </elementProp>
-      </collectionProp>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
-    <stringProp name="HTTPSampler.method">POST</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="1740524604">The invoice has been created</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-  </hashTree>
-
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Start" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments"/>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/start/order_id/${order_id}/</stringProp>
-    <stringProp name="HTTPSampler.method">GET</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/credit_memo_start.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="1382627322">New Memo</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-  </hashTree>
-
-    <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
-        <intProp name="InterleaveControl.style">1</intProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/credit_memo_submit.jmx</stringProp></RandomController>
-        <hashTree>
-            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Submit - Full Refund" enabled="true">
-              <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                <collectionProp name="Arguments.arguments">
-                  <elementProp name="form_key" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">${admin_form_key}</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">form_key</stringProp>
-                    <stringProp name="Argument.desc">false</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[items][${item_ids_1}][qty]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">1</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[items][${item_ids_1}][qty]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[items][${item_ids_2}][qty]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">1</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[items][${item_ids_2}][qty]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[do_offline]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">1</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[do_offline]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[comment_text]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">Credit Memo added</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[comment_text]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[shipping_amount]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">10</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[shipping_amount]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[adjustment_positive]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">0</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[adjustment_positive]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[adjustment_negative]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">0</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[adjustment_negative]</stringProp>
-                  </elementProp>
-                </collectionProp>
-              </elementProp>
-              <stringProp name="HTTPSampler.domain"/>
-              <stringProp name="HTTPSampler.port"/>
-              <stringProp name="HTTPSampler.connect_timeout"/>
-              <stringProp name="HTTPSampler.response_timeout"/>
-              <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-              <stringProp name="HTTPSampler.contentEncoding"/>
-              <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/save/order_id/${order_id}/</stringProp>
-              <stringProp name="HTTPSampler.method">POST</stringProp>
-              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-              <boolProp name="HTTPSampler.monitor">false</boolProp>
-              <stringProp name="HTTPSampler.embedded_url_re"/>
-            </HTTPSamplerProxy>
-            <hashTree>
-              <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                <collectionProp name="Asserion.test_strings">
-                  <stringProp name="-515117447">You created the credit memo</stringProp>
-                </collectionProp>
-                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                <boolProp name="Assertion.assume_success">false</boolProp>
-                <intProp name="Assertion.test_type">2</intProp>
-              </ResponseAssertion>
-              <hashTree/>
-            </hashTree>
-            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Submit - Partial Refund" enabled="true">
-              <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                <collectionProp name="Arguments.arguments">
-                  <elementProp name="form_key" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">${admin_form_key}</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">form_key</stringProp>
-                    <stringProp name="Argument.desc">false</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[items][${item_ids_1}][qty]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">1</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[items][${item_ids_1}][qty]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[do_offline]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">1</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[do_offline]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[comment_text]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">Credit Memo added</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[comment_text]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[shipping_amount]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">10</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[shipping_amount]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[adjustment_positive]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">0</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[adjustment_positive]</stringProp>
-                  </elementProp>
-                  <elementProp name="creditmemo[adjustment_negative]" elementType="HTTPArgument">
-                    <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                    <stringProp name="Argument.value">0</stringProp>
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">creditmemo[adjustment_negative]</stringProp>
-                  </elementProp>
-                </collectionProp>
-              </elementProp>
-              <stringProp name="HTTPSampler.domain"/>
-              <stringProp name="HTTPSampler.port"/>
-              <stringProp name="HTTPSampler.connect_timeout"/>
-              <stringProp name="HTTPSampler.response_timeout"/>
-              <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-              <stringProp name="HTTPSampler.contentEncoding"/>
-              <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/save/order_id/${order_id}/</stringProp>
-              <stringProp name="HTTPSampler.method">POST</stringProp>
-              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-              <boolProp name="HTTPSampler.monitor">false</boolProp>
-              <stringProp name="HTTPSampler.embedded_url_re"/>
-            </HTTPSamplerProxy>
-            <hashTree>
-              <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                <collectionProp name="Asserion.test_strings">
-                  <stringProp name="-515117447">You created the credit memo</stringProp>
-                </collectionProp>
-                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                <boolProp name="Assertion.assume_success">false</boolProp>
-                <intProp name="Assertion.test_type">2</intProp>
-              </ResponseAssertion>
-              <hashTree/>
-            </hashTree>
-          </hashTree>
-
-    <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Create/Process Returns - Pause" enabled="true">
-      <intProp name="ActionProcessor.action">1</intProp>
-      <intProp name="ActionProcessor.target">0</intProp>
-      <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCreateProcessReturnsDelay}*1000))}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/pause.jmx</stringProp></TestAction>
-    <hashTree/>
-  </hashTree>
-  </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Browse Customer Grid" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${browseCustomerGridPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Browse Customer Grid");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
-
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
-        <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
-      <stringProp name="script">
-        vars.put("gridEntityType" , "Customer");
-
-        pagesCount = parseInt(vars.get("customers_page_size")) || 20;
-        vars.put("grid_entity_page_size" , pagesCount);
-        vars.put("grid_namespace" , "customer_listing");
-        vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_customer_filter_text"));
-        vars.put("grid_filter_field", "name");
-
-        // set sort fields and sort directions
-        vars.put("grid_sort_field_1", "name");
-        vars.put("grid_sort_field_2", "group_id");
-        vars.put("grid_sort_field_3", "billing_country_id");
-        vars.put("grid_sort_order_1", "asc");
-        vars.put("grid_sort_order_2", "desc");
-      </stringProp>
-      <stringProp name="scriptLanguage">javascript</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_customers_grid/setup.jmx</stringProp></JSR223PostProcessor>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree/>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="namespace" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_namespace}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
-        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
-        <stringProp name="EXPECTED_VALUE">0</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">true</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
-        <stringProp name="VAR">entity_total_records</stringProp>
-        <stringProp name="JSONPATH">$.totalRecords</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
-        <stringProp name="cacheKey"/>
-        <stringProp name="filename"/>
-        <stringProp name="parameters"/>
-        <stringProp name="script">
-          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
-          var totalsRecord = parseInt(vars.get("entity_total_records"));
-          var pageCount = Math.round(totalsRecord/pageSize);
-
-          vars.put("grid_pages_count", pageCount);
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-      </JSR223PostProcessor>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="namespace" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_namespace}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
-        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
-        <stringProp name="EXPECTED_VALUE">0</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">true</boolProp>
-        <boolProp name="ISREGEX">true</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
-        <stringProp name="VAR">entity_total_records</stringProp>
-        <stringProp name="JSONPATH">$.totalRecords</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
-        <stringProp name="parameters"/>
-        <stringProp name="filename"/>
-        <stringProp name="script">
-          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
-var totalsRecord = parseInt(vars.get("entity_total_records"));
-var pageCount = Math.round(totalsRecord/pageSize);
-
-vars.put("grid_pages_count_filtered", pageCount);
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-      </JSR223PostProcessor>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
-      <stringProp name="CounterConfig.start">1</stringProp>
-      <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
-      <stringProp name="CounterConfig.incr">1</stringProp>
-      <stringProp name="CounterConfig.name">page_number</stringProp>
-      <stringProp name="CounterConfig.format"/>
-      <boolProp name="CounterConfig.per_user">true</boolProp>
-      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
-    <hashTree/>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="namespace" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_namespace}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${page_number}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
-      <stringProp name="CounterConfig.start">1</stringProp>
-      <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
-      <stringProp name="CounterConfig.incr">1</stringProp>
-      <stringProp name="CounterConfig.name">page_number</stringProp>
-      <stringProp name="CounterConfig.format"/>
-      <boolProp name="CounterConfig.per_user">true</boolProp>
-      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
-    <hashTree/>
-  
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
-</TestFragmentController>
-    <hashTree>
-      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
-        <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
-        <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
-        <boolProp name="ForeachController.useSeparator">true</boolProp>
-        <stringProp name="ForeachController.startIndex">0</stringProp>
-        <stringProp name="ForeachController.endIndex">3</stringProp>
-      </ForeachController>
-      <hashTree>
-        <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
-          <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
-          <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
-          <boolProp name="ForeachController.useSeparator">true</boolProp>
-          <stringProp name="ForeachController.startIndex">0</stringProp>
-          <stringProp name="ForeachController.endIndex">2</stringProp>
-        </ForeachController>
-        <hashTree>
-          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-              <collectionProp name="Arguments.arguments">
-                <elementProp name="namespace" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_namespace}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">namespace</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">filters[placeholder]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">paging[pageSize]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="paging[current]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${page_number}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">paging[current]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="sorting[field]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_sort_field}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">sorting[field]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="sorting[direction]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_sort_order}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">sorting[direction]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="isAjax" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">true</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">isAjax</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-              </collectionProp>
-            </elementProp>
-            <stringProp name="HTTPSampler.domain"/>
-            <stringProp name="HTTPSampler.port"/>
-            <stringProp name="HTTPSampler.connect_timeout"/>
-            <stringProp name="HTTPSampler.response_timeout"/>
-            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-            <stringProp name="HTTPSampler.contentEncoding"/>
-            <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-            <boolProp name="HTTPSampler.monitor">false</boolProp>
-            <stringProp name="HTTPSampler.embedded_url_re"/>
-          </HTTPSamplerProxy>
-          <hashTree>
-            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-              <collectionProp name="Asserion.test_strings">
-                <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
-              </collectionProp>
-              <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-              <boolProp name="Assertion.assume_success">false</boolProp>
-              <intProp name="Assertion.test_type">2</intProp>
-            </ResponseAssertion>
-            <hashTree/>
-          </hashTree>
-        </hashTree>
-      </hashTree>
-    </hashTree>
-  </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Create Order" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${adminCreateOrderPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Admin Create Order");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
-
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
-        <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.default"/>
-            <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
-        <hashTree/>
-    </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Order" enabled="true"/>
-    <hashTree>
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_order/admin_create_order.jmx</stringProp>
-        <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
-import java.util.Random;
-Random random = new Random();
-if (${seedForRandom} &gt; 0) {
-  random.setSeed(${seedForRandom});
-}
-number = random.nextInt(props.get("simple_products_list").size());
-simpleList = props.get("simple_products_list").get(number);
-vars.put("simple_product_1_url_key", simpleList.get("url_key"));
-vars.put("simple_product_1_name", simpleList.get("title"));
-vars.put("simple_product_1_id", simpleList.get("id"));
-
-do {
-    number1 = random.nextInt(props.get("simple_products_list").size());
-} while(number == number1);
-simpleList = props.get("simple_products_list").get(number1);
-vars.put("simple_product_2_url_key", simpleList.get("url_key"));
-vars.put("simple_product_2_name", simpleList.get("title"));
-vars.put("simple_product_2_id", simpleList.get("id"));
-
-number = random.nextInt(props.get("configurable_products_list").size());
-configurableList = props.get("configurable_products_list").get(number);
-vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
-vars.put("configurable_product_1_name", configurableList.get("title"));
-vars.put("configurable_product_1_id", configurableList.get("id"));
-vars.put("configurable_product_1_sku", configurableList.get("sku"));
-vars.put("configurable_attribute_id", configurableList.get("attribute_id"));
-vars.put("configurable_option_id", configurableList.get("attribute_option_id"));
-
-
-customers_index = 0;
-if (!props.containsKey("customer_ids_index")) {
-	props.put("customer_ids_index", customers_index);
-}
-
-try {
-	customers_index = props.get("customer_ids_index");
-	customers_list = props.get("customer_ids_list");
-
-	if (customers_index == customers_list.size()) {
-		customers_index=0;
-	}
-	vars.put("customer_id", customers_list.get(customers_index));
-	props.put("customer_ids_index", ++customers_index);
-}
-catch (java.lang.Exception e) {
-	   log.error("Caught Exception in 'Admin Create Order' thread.");
-	   SampleResult.setStopThread(true);
-}</stringProp>
-        <stringProp name="BeanShellSampler.filename"/>
-        <stringProp name="BeanShellSampler.parameters"/>
-        <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-      </BeanShellSampler>
-      <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Start Order" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/start/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-        <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
-      </HTTPSamplerProxy>
-      <hashTree/>
-      <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Configurable Product Options" enabled="true"/>
-      <hashTree>
-        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-          <collectionProp name="HeaderManager.headers">
-            <elementProp name="" elementType="Header">
-              <stringProp name="Header.name">Content-Type</stringProp>
-              <stringProp name="Header.value">application/json</stringProp>
-            </elementProp>
-            <elementProp name="" elementType="Header">
-              <stringProp name="Header.name">Accept</stringProp>
-              <stringProp name="Header.value">*/*</stringProp>
-            </elementProp>
-          </collectionProp>
-        </HeaderManager>
-        <hashTree/>
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
-          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-            <collectionProp name="Arguments.arguments">
-              <elementProp name="" elementType="HTTPArgument">
-                <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
-                <stringProp name="Argument.metadata">=</stringProp>
-              </elementProp>
-            </collectionProp>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"/>
-          <stringProp name="HTTPSampler.port"/>
-          <stringProp name="HTTPSampler.connect_timeout"/>
-          <stringProp name="HTTPSampler.response_timeout"/>
-          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"/>
-          <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
-          <stringProp name="HTTPSampler.method">POST</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <boolProp name="HTTPSampler.monitor">false</boolProp>
-          <stringProp name="HTTPSampler.embedded_url_re"/>
-        </HTTPSamplerProxy>
-        <hashTree>
-          <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
-            <stringProp name="VAR">admin_token</stringProp>
-            <stringProp name="JSONPATH">$</stringProp>
-            <stringProp name="DEFAULT"/>
-            <stringProp name="VARIABLE"/>
-            <stringProp name="SUBJECT">BODY</stringProp>
-          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-          <hashTree/>
-          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
-            <collectionProp name="Asserion.test_strings">
-              <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
-            </collectionProp>
-            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-            <boolProp name="Assertion.assume_success">false</boolProp>
-            <intProp name="Assertion.test_type">1</intProp>
-            <stringProp name="Assertion.scope">variable</stringProp>
-            <stringProp name="Scope.variable">admin_token</stringProp>
-          </ResponseAssertion>
-          <hashTree/>
-        </hashTree>
-        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-          <collectionProp name="HeaderManager.headers">
-            <elementProp name="" elementType="Header">
-              <stringProp name="Header.name">Authorization</stringProp>
-              <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
-            </elementProp>
-          </collectionProp>
-        </HeaderManager>
-        <hashTree/>
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Configurable Product Options" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"/>
-          <stringProp name="HTTPSampler.port"/>
-          <stringProp name="HTTPSampler.connect_timeout"/>
-          <stringProp name="HTTPSampler.response_timeout"/>
-          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"/>
-          <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${configurable_product_1_sku}/options/all</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <boolProp name="HTTPSampler.monitor">false</boolProp>
-          <stringProp name="HTTPSampler.embedded_url_re"/>
-        </HTTPSamplerProxy>
-        <hashTree>
-          <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="JSON Path Extractor: Extract attribute_ids" enabled="true">
-            <stringProp name="VAR">attribute_ids</stringProp>
-            <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
-            <stringProp name="DEFAULT">NO_VALUE</stringProp>
-            <stringProp name="VARIABLE"/>
-            <stringProp name="SUBJECT">BODY</stringProp>
-          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-          <hashTree/>
-          <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="JSON Path Extractor: Extract option_values" enabled="true">
-            <stringProp name="VAR">option_values</stringProp>
-            <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
-            <stringProp name="DEFAULT">NO_VALUE</stringProp>
-            <stringProp name="VARIABLE"/>
-            <stringProp name="SUBJECT">BODY</stringProp>
-          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-          <hashTree/>
-        </hashTree>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Products" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="item[${simple_product_1_id}][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">item[${simple_product_1_id}][qty]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="item[${simple_product_2_id}][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">item[${simple_product_2_id}][qty]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="item[${configurable_product_1_id}][qty]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">item[${configurable_product_1_id}][qty]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="customer_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">customer_id</stringProp>
-              <stringProp name="Argument.value">${customer_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="store_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">store_id</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="currency_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">currency_id</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="payment[method]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">payment[method]</stringProp>
-              <stringProp name="Argument.value">checkmo</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="reset_shipping" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">reset_shipping</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="json" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">json</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="as_js_varname" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">as_js_varname</stringProp>
-              <stringProp name="Argument.value">iFrameResponse</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/search,items,shipping_method,totals,giftmessage,billing_method?isAjax=true</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-        <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
-          <boolProp name="resetInterpreter">false</boolProp>
-          <stringProp name="parameters"/>
-          <stringProp name="filename"/>
-          <stringProp name="script">try {
-	attribute_ids = vars.get("attribute_ids");
-	option_values = vars.get("option_values");
-	attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
-	option_values = option_values.replace("[","").replace("]","").replace("\"", "");
-	attribute_ids_array = attribute_ids.split(",");
-	option_values_array = option_values.split(",");
-	args = ctx.getCurrentSampler().getArguments();
-	it = args.iterator();
-	while (it.hasNext()) {
-	    argument = it.next();
-	    if (argument.getStringValue().contains("${")) {
-	        args.removeArgument(argument.getName());
-	    }
-	}
-	for (int i = 0; i &lt; attribute_ids_array.length; i++) {
+vars.put("product_url_key", product.get("url_key"));
+vars.put("product_id", product.get("id"));
+vars.put("product_name", product.get("title"));
+vars.put("product_uenc", product.get("uenc"));
+vars.put("product_sku", product.get("sku"));
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
+    <hashTree/>
+  
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
+productsAdded = productsAdded + 1;
 
-    ctx.getCurrentSampler().addArgument("item[" + vars.get("configurable_product_1_id") + "][super_attribute][" + attribute_ids_array[i] + "]", option_values_array[i]);
-	}
-} catch (Exception e) {
-    log.error("error???", e);
-}</stringProp>
-        </BeanShellPreProcessor>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Collect Shipping Rates" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="collect_shipping_rates" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">collect_shipping_rates</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="customer_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">customer_id</stringProp>
-              <stringProp name="Argument.value">${customer_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="store_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">store_id</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="currency_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">currency_id</stringProp>
-              <stringProp name="Argument.value">false</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="payment[method]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">payment[method]</stringProp>
-              <stringProp name="Argument.value">checkmo</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="json" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">json</stringProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/shipping_method,totals?isAjax=true</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipping Method" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-1987784558">shipping_method</stringProp>
-            <stringProp name="818779431">Flat Rate</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Order" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="limit" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">limit</stringProp>
-              <stringProp name="Argument.value">20</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="entity_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">entity_id</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="name" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">name</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="email" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">email</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="Telephone" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">Telephone</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="billing_postcode" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">billing_postcode</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="billing_country_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">billing_country_id</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="billing_regione" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">billing_regione</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="store_name" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">store_name</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="page" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">page</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[currency]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[currency]</stringProp>
-              <stringProp name="Argument.value">USD</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="sku" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">sku</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="qty" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">qty</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="limit" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">limit</stringProp>
-              <stringProp name="Argument.value">20</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="entity_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">entity_id</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="name" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">name</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="sku" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">sku</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="price[from]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">price[from]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="price[to]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">price[to]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="in_products" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">in_products</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="page" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">page</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="coupon_code" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">coupon_code</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[account][group_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[account][group_id]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[account][email]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[account][email]</stringProp>
-              <stringProp name="Argument.value">user_${customer_id}@example.com</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][customer_address_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][customer_address_id]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][prefix]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][prefix]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][firstname]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][firstname]</stringProp>
-              <stringProp name="Argument.value">Anthony</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][middlename]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][middlename]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][lastname]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][lastname]</stringProp>
-              <stringProp name="Argument.value">Nealy</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][suffix]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][suffix]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][company]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][company]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][street][0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][street][0]</stringProp>
-              <stringProp name="Argument.value">123 Freedom Blvd. #123</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][street][1]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][street][1]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][city]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][city]</stringProp>
-              <stringProp name="Argument.value">Fayetteville</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][country_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][country_id]</stringProp>
-              <stringProp name="Argument.value">US</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][region]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][region]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][region_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][region_id]</stringProp>
-              <stringProp name="Argument.value">5</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][postcode]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][postcode]</stringProp>
-              <stringProp name="Argument.value">123123</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][telephone]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][telephone]</stringProp>
-              <stringProp name="Argument.value">022-333-4455</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][fax]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][fax]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[billing_address][vat_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[billing_address][vat_id]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="shipping_same_as_billing" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">shipping_same_as_billing</stringProp>
-              <stringProp name="Argument.value">on</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="payment[method]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">payment[method]</stringProp>
-              <stringProp name="Argument.value">checkmo</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[shipping_method]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[shipping_method]</stringProp>
-              <stringProp name="Argument.value">flatrate_flatrate</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="order[comment][customer_note]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[comment][customer_note]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+vars.put("totalProductsAdded", String.valueOf(productsAdded));
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                <collectionProp name="Arguments.arguments"/>
             </elementProp>
-            <elementProp name="order[comment][customer_note_notify]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[comment][customer_note_notify]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
+        <hashTree>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                    <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+            </ResponseAssertion>
+            <hashTree/>
+        </hashTree>
+    
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="product" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${product_id}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product</stringProp>
+          </elementProp>
+          <elementProp name="related_product" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">related_product</stringProp>
+          </elementProp>
+          <elementProp name="qty" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">qty</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+      <collectionProp name="HeaderManager.headers">
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">X-Requested-With</stringProp>
+          <stringProp name="Header.value">XMLHttpRequest</stringProp>
+        </elementProp>
+      </collectionProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="sections" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">cart,messages</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sections</stringProp>
+          </elementProp>
+          <elementProp name="update_section_id" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">update_section_id</stringProp>
+          </elementProp>
+          <elementProp name="_" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="210217247">You added ${product_name} to your shopping cart.</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2057973164">This product is out of stock.</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">6</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    
+    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+      <collectionProp name="HeaderManager.headers">
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">X-Requested-With</stringProp>
+          <stringProp name="Header.value">XMLHttpRequest</stringProp>
+        </elementProp>
+      </collectionProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+  
+    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Cart" enabled="true">
+      <boolProp name="LoopController.continue_forever">true</boolProp>
+      <stringProp name="LoopController.loops">1</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
+    <hashTree>
+      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+        <stringProp name="CounterConfig.start">1</stringProp>
+        <stringProp name="CounterConfig.end"/>
+        <stringProp name="CounterConfig.incr">1</stringProp>
+        <stringProp name="CounterConfig.name">_counter</stringProp>
+        <stringProp name="CounterConfig.format"/>
+        <boolProp name="CounterConfig.per_user">true</boolProp>
+        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
+      </CounterConfig>
+      <hashTree/>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
+      <stringProp name="BeanShellSampler.query">
+import java.util.Random;
+
+Random random = vars.getObject("randomIntGenerator");
+number = random.nextInt(props.get("configurable_products_list").size());
+product = props.get("configurable_products_list").get(number);
+
+vars.put("product_url_key", product.get("url_key"));
+vars.put("product_id", product.get("id"));
+vars.put("product_name", product.get("title"));
+vars.put("product_uenc", product.get("uenc"));
+vars.put("product_sku", product.get("sku"));
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
+    <hashTree/>
+  
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
+productsAdded = productsAdded + 1;
+
+vars.put("totalProductsAdded", String.valueOf(productsAdded));
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                <collectionProp name="Arguments.arguments"/>
             </elementProp>
-            <elementProp name="order[send_confirmation]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">order[send_confirmation]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
+        <hashTree>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                <collectionProp name="Asserion.test_strings">
+                    <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
+                </collectionProp>
+                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                <boolProp name="Assertion.assume_success">false</boolProp>
+                <intProp name="Assertion.test_type">2</intProp>
+            </ResponseAssertion>
+            <hashTree/>
+        </hashTree>
+    
+    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="SetUp - Get Configurable Product Options" enabled="true">
+      <boolProp name="LoopController.continue_forever">true</boolProp>
+      <stringProp name="LoopController.loops">1</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/get_configurable_product_options.jmx</stringProp></LoopController>
+    <hashTree>
+      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+        <collectionProp name="HeaderManager.headers">
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Content-Type</stringProp>
+            <stringProp name="Header.value">application/json</stringProp>
+          </elementProp>
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Accept</stringProp>
+            <stringProp name="Header.value">*/*</stringProp>
+          </elementProp>
+        </collectionProp>
+      </HeaderManager>
+      <hashTree/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
+        <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">false</boolProp>
+              <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
             </elementProp>
           </collectionProp>
         </elementProp>
@@ -22592,146 +9225,554 @@ catch (java.lang.Exception e) {
         <stringProp name="HTTPSampler.response_timeout"/>
         <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
         <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/save/</stringProp>
+        <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
         <stringProp name="HTTPSampler.method">POST</stringProp>
         <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
         <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
         <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
         <boolProp name="HTTPSampler.monitor">false</boolProp>
         <stringProp name="HTTPSampler.embedded_url_re"/>
-        <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
       </HTTPSamplerProxy>
       <hashTree>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">order_id</stringProp>
-          <stringProp name="RegexExtractor.regex">${host}${base_path}${admin_path}/sales/order/index/order_id/(\d+)/</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 1" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">order_item_1</stringProp>
-          <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 2" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">order_item_2</stringProp>
-          <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">2</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 3" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">order_item_3</stringProp>
-          <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">3</stringProp>
-        </RegexExtractor>
+        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+          <stringProp name="VAR">admin_token</stringProp>
+          <stringProp name="JSONPATH">$</stringProp>
+          <stringProp name="DEFAULT"/>
+          <stringProp name="VARIABLE"/>
+          <stringProp name="SUBJECT">BODY</stringProp>
+        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Id" enabled="true">
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
           <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
+            <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
           </collectionProp>
           <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
           <boolProp name="Assertion.assume_success">false</boolProp>
           <intProp name="Assertion.test_type">1</intProp>
           <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">order_id</stringProp>
+          <stringProp name="Scope.variable">admin_token</stringProp>
         </ResponseAssertion>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 1" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">order_item_1</stringProp>
-        </ResponseAssertion>
+      </hashTree>
+      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+        <collectionProp name="HeaderManager.headers">
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Authorization</stringProp>
+            <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
+          </elementProp>
+        </collectionProp>
+      </HeaderManager>
+      <hashTree/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${product_sku}/options/all</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="JSON Path Extractor: Extract attribute_ids" enabled="true">
+          <stringProp name="VAR">attribute_ids</stringProp>
+          <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
+          <stringProp name="DEFAULT">NO_VALUE</stringProp>
+          <stringProp name="VARIABLE"/>
+          <stringProp name="SUBJECT">BODY</stringProp>
+        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 2" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">order_item_2</stringProp>
-        </ResponseAssertion>
+        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="JSON Path Extractor: Extract option_values" enabled="true">
+          <stringProp name="VAR">option_values</stringProp>
+          <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
+          <stringProp name="DEFAULT">NO_VALUE</stringProp>
+          <stringProp name="VARIABLE"/>
+          <stringProp name="SUBJECT">BODY</stringProp>
+        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 3" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">order_item_3</stringProp>
-        </ResponseAssertion>
+      </hashTree>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="product" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${product_id}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product</stringProp>
+          </elementProp>
+          <elementProp name="related_product" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">related_product</stringProp>
+          </elementProp>
+          <elementProp name="qty" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">qty</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+        <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+                <boolProp name="resetInterpreter">false</boolProp>
+                <stringProp name="parameters"/>
+                <stringProp name="filename"/>
+                <stringProp name="script">
+                    try {
+                    attribute_ids = vars.get("attribute_ids");
+                    option_values = vars.get("option_values");
+                    attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
+                    option_values = option_values.replace("[","").replace("]","").replace("\"", "");
+                    attribute_ids_array = attribute_ids.split(",");
+                    option_values_array = option_values.split(",");
+                    args = ctx.getCurrentSampler().getArguments();
+                    it = args.iterator();
+                    while (it.hasNext()) {
+                        argument = it.next();
+                        if (argument.getStringValue().contains("${")) {
+                            args.removeArgument(argument.getName());
+                        }
+                    }
+                    for (int i = 0; i &lt; attribute_ids_array.length; i++) {
+                        ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
+                    }
+                    } catch (Exception e) {
+                        log.error("eror&#x2026;", e);
+                    }
+                </stringProp>
+              <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx</stringProp></BeanShellPreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Created" enabled="true">
+    
+    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+      <collectionProp name="HeaderManager.headers">
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">X-Requested-With</stringProp>
+          <stringProp name="Header.value">XMLHttpRequest</stringProp>
+        </elementProp>
+      </collectionProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="sections" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">cart,messages</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sections</stringProp>
+          </elementProp>
+          <elementProp name="update_section_id" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">update_section_id</stringProp>
+          </elementProp>
+          <elementProp name="_" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="210217247">You added ${product_name} to your shopping cart.</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2057973164">This product is out of stock.</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">6</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    
+    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+      <collectionProp name="HeaderManager.headers">
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">X-Requested-With</stringProp>
+          <stringProp name="Header.value">XMLHttpRequest</stringProp>
+        </elementProp>
+      </collectionProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Make Cart Empty" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Cart" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol"/>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}checkout/cart/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/open_cart.jmx</stringProp></HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Opened" enabled="true">
           <collectionProp name="Asserion.test_strings">
-            <stringProp name="563107624">You created the order.</stringProp>
+            <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
           </collectionProp>
           <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
           <boolProp name="Assertion.assume_success">false</boolProp>
           <intProp name="Assertion.test_type">2</intProp>
         </ResponseAssertion>
         <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract cart qty inputs" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">cart_items_qty_inputs</stringProp>
+          <stringProp name="RegexExtractor.regex">name="cart\[([^\[\]]+)\]\[qty\]"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">-1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
       </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Invoice" enabled="true">
+    
+    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Remove Items From Cart" enabled="true">
+      <boolProp name="LoopController.continue_forever">true</boolProp>
+      <stringProp name="LoopController.loops">${cart_items_qty_inputs_matchNr}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
+    <hashTree>
+      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+        <stringProp name="CounterConfig.start">1</stringProp>
+        <stringProp name="CounterConfig.end"/>
+        <stringProp name="CounterConfig.incr">1</stringProp>
+        <stringProp name="CounterConfig.name">_counter</stringProp>
+        <stringProp name="CounterConfig.format"/>
+        <boolProp name="CounterConfig.per_user">true</boolProp>
+        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
+      </CounterConfig>
+      <hashTree/>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data for Removing from Cart" enabled="true">
+      <stringProp name="BeanShellSampler.query">
+id = vars.get("_counter");
+vars.put("uenc", vars.get("cart_items_uencs_" + id));
+vars.put("item_id", vars.get("cart_items_qty_inputs_" + id));
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/remove_item_from_cart_setup.jmx</stringProp></BeanShellSampler>
+    <hashTree/>
+  
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Remove item" enabled="true">
+           <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+             <collectionProp name="Arguments.arguments">
+               <elementProp name="form_key" elementType="HTTPArgument">
+                 <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                 <stringProp name="Argument.value">${form_key}</stringProp>
+                 <stringProp name="Argument.metadata">=</stringProp>
+                 <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                 <stringProp name="Argument.name">form_key</stringProp>
+               </elementProp>
+               <elementProp name="uenc" elementType="HTTPArgument">
+                 <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                 <stringProp name="Argument.value">${uenc}</stringProp>
+                 <stringProp name="Argument.metadata">=</stringProp>
+                 <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                 <stringProp name="Argument.name">uenc</stringProp>
+               </elementProp>
+               <elementProp name="id" elementType="HTTPArgument">
+                 <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                 <stringProp name="Argument.value">${item_id}</stringProp>
+                 <stringProp name="Argument.metadata">=</stringProp>
+                 <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                 <stringProp name="Argument.name">id</stringProp>
+               </elementProp>
+             </collectionProp>
+           </elementProp>
+           <stringProp name="HTTPSampler.domain"/>
+           <stringProp name="HTTPSampler.port"/>
+           <stringProp name="HTTPSampler.connect_timeout"/>
+           <stringProp name="HTTPSampler.response_timeout"/>
+           <stringProp name="HTTPSampler.protocol"/>
+           <stringProp name="HTTPSampler.contentEncoding"/>
+           <stringProp name="HTTPSampler.path">${base_path}checkout/cart/delete/</stringProp>
+           <stringProp name="HTTPSampler.method">POST</stringProp>
+           <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+           <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+           <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+           <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+           <boolProp name="HTTPSampler.monitor">false</boolProp>
+           <stringProp name="HTTPSampler.embedded_url_re"/>
+         <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/remove_item_from_cart.jmx</stringProp></HTTPSamplerProxy>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check Cart is Empty" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="sections" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">cart</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sections</stringProp>
+          </elementProp>
+          <elementProp name="update_section_id" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">update_section_id</stringProp>
+          </elementProp>
+          <elementProp name="_" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/check_cart_is_empty.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-350323027">\"summary_count\":0</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1723813687">You are signed out.</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+customerUserList = props.get("customer_emails_list");
+customerUserList.add(vars.get("customer_email"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Account management" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${accountManagementPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Account management");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies">
+        <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
+          <stringProp name="Cookie.value">30</stringProp>
+          <stringProp name="Cookie.domain">${host}</stringProp>
+          <stringProp name="Cookie.path">/</stringProp>
+          <boolProp name="Cookie.secure">false</boolProp>
+          <longProp name="Cookie.expires">0</longProp>
+          <boolProp name="Cookie.path_specified">true</boolProp>
+          <boolProp name="Cookie.domain_specified">true</boolProp>
+        </elementProp>
+        <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
+          <stringProp name="Cookie.value">${form_key}</stringProp>
+          <stringProp name="Cookie.domain">${host}</stringProp>
+          <stringProp name="Cookie.path">${base_path}</stringProp>
+          <boolProp name="Cookie.secure">false</boolProp>
+          <longProp name="Cookie.expires">0</longProp>
+          <boolProp name="Cookie.path_specified">true</boolProp>
+          <boolProp name="Cookie.domain_specified">true</boolProp>
+        </elementProp>
+      </collectionProp>
+      <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_customer_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+customerUserList = props.get("customer_emails_list");
+customerUser = customerUserList.poll();
+if (customerUser == null) {
+  SampleResult.setResponseMessage("customernUser list is empty");
+  SampleResult.setResponseData("customerUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("customer_email", customerUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
         <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="invoice[items][${order_item_1}]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">invoice[items][${order_item_1}]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="invoice[items][${order_item_2}]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">invoice[items][${order_item_2}]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="invoice[items][${order_item_3}]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">invoice[items][${order_item_3}]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">invoice[comment_text]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-          </collectionProp>
+          <collectionProp name="Arguments.arguments"/>
         </elementProp>
         <stringProp name="HTTPSampler.domain"/>
         <stringProp name="HTTPSampler.port"/>
@@ -22739,20 +9780,19 @@ catch (java.lang.Exception e) {
         <stringProp name="HTTPSampler.response_timeout"/>
         <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
         <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <stringProp name="HTTPSampler.path">${base_path}</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
         <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
         <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
         <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
         <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
         <boolProp name="HTTPSampler.monitor">false</boolProp>
         <stringProp name="HTTPSampler.embedded_url_re"/>
-        <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
-      </HTTPSamplerProxy>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
       <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Invoice Created" enabled="true">
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
           <collectionProp name="Asserion.test_strings">
-            <stringProp name="-1878312078">The invoice has been created.</stringProp>
+            <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
           </collectionProp>
           <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
           <boolProp name="Assertion.assume_success">false</boolProp>
@@ -22760,45 +9800,209 @@ catch (java.lang.Exception e) {
         </ResponseAssertion>
         <hashTree/>
       </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Shipment" enabled="true">
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${customer_email}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${customer_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="send" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">send</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">addressId</stringProp>
+        <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">addressId</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="sections" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sections</stringProp>
+          </elementProp>
+          <elementProp name="update_section_id" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">false</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">update_section_id</stringProp>
+          </elementProp>
+          <elementProp name="_" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    </HTTPSamplerProxy>
+    <hashTree/>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Orders" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}sales/order/history/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/my_orders.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="220295440">&lt;title&gt;My Orders&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract orderId" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">orderId</stringProp>
+        <stringProp name="RegexExtractor.regex">sales/order/view/order_id/(\d+)/</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+    </hashTree>
+  
+    <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Orders Controller" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/if_orders.jmx</stringProp>
+      <stringProp name="IfController.condition">"${orderId}" != "NOT_FOUND"</stringProp>
+      <boolProp name="IfController.evaluateAll">false</boolProp>
+    </IfController>
+    <hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Order" enabled="true">
         <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="shipment[items][${order_item_1}]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">shipment[items][${order_item_1}]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="shipment[items][${order_item_2}]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">shipment[items][${order_item_2}]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="shipment[items][${order_item_3}]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">shipment[items][${order_item_3}]</stringProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-            <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.name">shipment[comment_text]</stringProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            </elementProp>
-          </collectionProp>
+          <collectionProp name="Arguments.arguments"/>
         </elementProp>
         <stringProp name="HTTPSampler.domain"/>
         <stringProp name="HTTPSampler.port"/>
@@ -22806,41 +10010,416 @@ catch (java.lang.Exception e) {
         <stringProp name="HTTPSampler.response_timeout"/>
         <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
         <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <stringProp name="HTTPSampler.path">${base_path}sales/order/view/order_id/${orderId}</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
         <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
         <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
         <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
         <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
         <boolProp name="HTTPSampler.monitor">false</boolProp>
         <stringProp name="HTTPSampler.embedded_url_re"/>
-        <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
       </HTTPSamplerProxy>
       <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipment Created" enabled="true">
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
           <collectionProp name="Asserion.test_strings">
-            <stringProp name="-348539683">The shipment has been created.</stringProp>
+            <stringProp name="1956770127">&lt;title&gt;Order #</stringProp>
           </collectionProp>
           <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
           <boolProp name="Assertion.assume_success">false</boolProp>
           <intProp name="Assertion.test_type">2</intProp>
         </ResponseAssertion>
         <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract shipment tab" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">shipment_tab</stringProp>
+          <stringProp name="RegexExtractor.regex">sales/order/shipment/order_id/(\d+)..Order Shipments</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+      </hashTree>
+      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Shipments Controller" enabled="true">
+        <stringProp name="TestPlan.comments">May not have shipped</stringProp>
+        <stringProp name="IfController.condition">"${shipment_tab}" != "NOT_FOUND"</stringProp>
+        <boolProp name="IfController.evaluateAll">false</boolProp>
+      </IfController>
+      <hashTree>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Order Shipments" enabled="true">
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.domain"/>
+          <stringProp name="HTTPSampler.port"/>
+          <stringProp name="HTTPSampler.connect_timeout"/>
+          <stringProp name="HTTPSampler.response_timeout"/>
+          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"/>
+          <stringProp name="HTTPSampler.path">${base_path}sales/order/shipment/order_id/${orderId}</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <boolProp name="HTTPSampler.monitor">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"/>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings">
+              <stringProp name="120578727">Track this shipment</stringProp>
+            </collectionProp>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">2</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract popup link" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">popupLink</stringProp>
+            <stringProp name="RegexExtractor.regex">popupWindow": {"windowURL":"([^'"]+)",</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+          </RegexExtractor>
+          <hashTree/>
+        </hashTree>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Track Shipment" enabled="true">
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.domain"/>
+          <stringProp name="HTTPSampler.port"/>
+          <stringProp name="HTTPSampler.connect_timeout"/>
+          <stringProp name="HTTPSampler.response_timeout"/>
+          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"/>
+          <stringProp name="HTTPSampler.path">${popupLink}</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <boolProp name="HTTPSampler.monitor">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"/>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings">
+              <stringProp name="-760430210">&lt;title&gt;Tracking Information&lt;/title&gt;</stringProp>
+            </collectionProp>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">2</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+        </hashTree>
       </hashTree>
     </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Downloadable Products" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}downloadable/customer/products</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/my_downloadable_products.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="358050505">&lt;title&gt;My Downloadable Products&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract orderId" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">orderId</stringProp>
+        <stringProp name="RegexExtractor.regex">sales/order/view/order_id/(\d+)/</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract linkId" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">linkId</stringProp>
+        <stringProp name="RegexExtractor.regex">downloadable/download/link/id/(\d+)/</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+    </hashTree>
+  
+    <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Downloadables Controller" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/if_downloadables.jmx</stringProp>
+      <stringProp name="IfController.condition">"${orderId}" != "NOT_FOUND"</stringProp>
+      <boolProp name="IfController.evaluateAll">false</boolProp>
+    </IfController>
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Downloadable Product" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}sales/order/view/order_id/${orderId}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/view_downloadable_products.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1956770127">&lt;title&gt;Order #</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Download Product" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}downloadable/download/link/id/${linkId}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/download_product.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Wish List" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}wishlist</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    </HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1907714722">&lt;title&gt;My Wish List&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract wishlistId" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">wishlistId</stringProp>
+        <stringProp name="RegexExtractor.regex">wishlist/index/update/wishlist_id/([^'"]+)/</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/my_wish_list.jmx</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Verify that there are items in the wishlist" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">buttonTitle</stringProp>
+        <stringProp name="RegexExtractor.regex">Update Wish List</stringProp>
+        <stringProp name="RegexExtractor.template">FOUND</stringProp>
+        <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+    </hashTree>
+  
+    <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Wish List Controller" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/if_wishlist.jmx</stringProp>
+      <stringProp name="IfController.condition">"${buttonTitle}" === "FOUND"</stringProp>
+      <boolProp name="IfController.evaluateAll">false</boolProp>
+    </IfController>
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Share Wish List" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}wishlist/index/share/wishlist_id/${wishlistId}/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/share_wish_list.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1257102154">&lt;title&gt;Wish List Sharing&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Send Wish List" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="emails" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${customer_email}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">emails</stringProp>
+          </elementProp>
+          <elementProp name="message" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">[TEST] See my wishlist!!!</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">message</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}wishlist/index/send/wishlist_id/${wishlistId}/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/send_wish_list.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1907714722">&lt;title&gt;My Wish List&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1723813687">You are signed out.</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+customerUserList = props.get("customer_emails_list");
+customerUserList.add(vars.get("customer_email"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
   </hashTree>
   </hashTree>
 
   </hashTree>
 
     
-        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Others" enabled="true">
+        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Admin Pool" enabled="true">
             <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
             <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
                 <boolProp name="LoopController.continue_forever">false</boolProp>
                 <stringProp name="LoopController.loops">${loops}</stringProp>
             </elementProp>
-            <stringProp name="ThreadGroup.num_threads">${othersPoolUsers}</stringProp>
+            <stringProp name="ThreadGroup.num_threads">${adminPoolUsers}</stringProp>
             <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
             <longProp name="ThreadGroup.start_time">1505803944000</longProp>
             <longProp name="ThreadGroup.end_time">1505803944000</longProp>
@@ -22849,11 +10428,11 @@ catch (java.lang.Exception e) {
             <stringProp name="ThreadGroup.delay"/>
         <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
         <hashTree>
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Customer Management" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin CMS Management" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${adminCustomerManagementPercentage}</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${adminCMSManagementPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -22874,7 +10453,7 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Admin Customer Management");
+                vars.put("testLabel", "Admin CMS Management");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
@@ -22934,10 +10513,36 @@ if (testLabel
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
     <hashTree/>
   
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
     <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
     <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
@@ -23051,118 +10656,19 @@ if (testLabel
         <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
         <hashTree/>
     </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Customer Management" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_customer_management/admin_customer_management.jmx</stringProp>
-</TestFragmentController>
-    <hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-          <collectionProp name="HeaderManager.headers">
-            <elementProp name="Accept-Language" elementType="Header">
-              <stringProp name="Header.name">Accept-Language</stringProp>
-              <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
-            </elementProp>
-            <elementProp name="Accept" elementType="Header">
-              <stringProp name="Header.name">Accept</stringProp>
-              <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
-            </elementProp>
-            <elementProp name="User-Agent" elementType="Header">
-              <stringProp name="Header.name">User-Agent</stringProp>
-              <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
-            </elementProp>
-            <elementProp name="Accept-Encoding" elementType="Header">
-              <stringProp name="Header.name">Accept-Encoding</stringProp>
-              <stringProp name="Header.value">gzip, deflate</stringProp>
-            </elementProp>
-          </collectionProp>
-        </HeaderManager>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Render" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="namespace" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">customer_listing</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">namespace</stringProp>
-            </elementProp>
-            <elementProp name="search" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">search</stringProp>
-            </elementProp>
-            <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            </elementProp>
-            <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">20</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">paging[pageSize]</stringProp>
-            </elementProp>
-            <elementProp name="paging[current]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">paging[current]</stringProp>
-            </elementProp>
-            <elementProp name="sorting[field]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">entity_id</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">sorting[field]</stringProp>
-            </elementProp>
-            <elementProp name="sorting[direction]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">asc</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">sorting[direction]</stringProp>
-            </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-            </elementProp>
-          </collectionProp>
+  </hashTree>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin CMS Management" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_cms_management/admin_cms_management.jmx</stringProp>
+</TestFragmentController>
+    <hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
         </elementProp>
         <stringProp name="HTTPSampler.domain"/>
         <stringProp name="HTTPSampler.port"/>
@@ -23170,7 +10676,7 @@ if (testLabel
         <stringProp name="HTTPSampler.response_timeout"/>
         <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
         <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/</stringProp>
         <stringProp name="HTTPSampler.method">GET</stringProp>
         <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
         <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -23179,1238 +10685,3998 @@ if (testLabel
         <boolProp name="HTTPSampler.monitor">false</boolProp>
         <stringProp name="HTTPSampler.embedded_url_re"/>
       </HTTPSamplerProxy>
-      <hashTree>
-        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-          <collectionProp name="HeaderManager.headers">
-            <elementProp name="" elementType="Header">
-              <stringProp name="Header.name">X-Requested-With</stringProp>
-              <stringProp name="Header.value">XMLHttpRequest</stringProp>
-            </elementProp>
-          </collectionProp>
-        </HeaderManager>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Render" enabled="true">
+      <hashTree/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/new</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
         <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
           <collectionProp name="Arguments.arguments">
-            <elementProp name="namespace" elementType="HTTPArgument">
+            <elementProp name="content" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">customer_listing</stringProp>
+              <stringProp name="Argument.value">&lt;p&gt;CMS Content ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">namespace</stringProp>
+              <stringProp name="Argument.name">content</stringProp>
             </elementProp>
-            <elementProp name="search" elementType="HTTPArgument">
+            <elementProp name="content_heading" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Lastname</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">search</stringProp>
+              <stringProp name="Argument.name">content_heading</stringProp>
             </elementProp>
-            <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <elementProp name="form_key" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">filters[placeholder]</stringProp>
+              <stringProp name="Argument.name">form_key</stringProp>
             </elementProp>
-            <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <elementProp name="identifier" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">20</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">paging[pageSize]</stringProp>
+              <stringProp name="Argument.name">identifier</stringProp>
             </elementProp>
-            <elementProp name="paging[current]" elementType="HTTPArgument">
+            <elementProp name="is_active" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
               <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">paging[current]</stringProp>
+              <stringProp name="Argument.name">is_active</stringProp>
             </elementProp>
-            <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <elementProp name="layout_update_xml" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">entity_id</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">sorting[field]</stringProp>
+              <stringProp name="Argument.name">layout_update_xml</stringProp>
             </elementProp>
-            <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <elementProp name="meta_description" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">asc</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">sorting[direction]</stringProp>
+              <stringProp name="Argument.name">meta_description</stringProp>
             </elementProp>
-            <elementProp name="isAjax" elementType="HTTPArgument">
+            <elementProp name="meta_keywords" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-          <collectionProp name="HeaderManager.headers">
-            <elementProp name="" elementType="Header">
-              <stringProp name="Header.name">X-Requested-With</stringProp>
-              <stringProp name="Header.value">XMLHttpRequest</stringProp>
+              <stringProp name="Argument.name">meta_keywords</stringProp>
+            </elementProp>
+            <elementProp name="meta_title" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">meta_title</stringProp>
+            </elementProp>
+            <elementProp name="nodes_data" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">false</boolProp>
+              <stringProp name="Argument.value">{}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">nodes_data</stringProp>
+            </elementProp>
+            <elementProp name="node_ids" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">node_ids</stringProp>
+            </elementProp>
+            <elementProp name="page_id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">page_id</stringProp>
+            </elementProp>
+            <elementProp name="page_layout" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1column</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">page_layout</stringProp>
+            </elementProp>
+            <elementProp name="store_id[0]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">store_id[0]</stringProp>
+            </elementProp>
+            <elementProp name="title" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">CMS Title ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">title</stringProp>
+            </elementProp>
+            <elementProp name="website_root" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">website_root</stringProp>
             </elementProp>
           </collectionProp>
-        </HeaderManager>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer edit url" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">customer_edit_url_path</stringProp>
-          <stringProp name="RegexExtractor.regex">actions":\{"edit":\{"href":"(?:http|https):\\/\\/(.*?)\\/customer\\/index\\/edit\\/id\\/(\d+)\\/",</stringProp>
-          <stringProp name="RegexExtractor.template">/customer/index/edit/id/$2$/</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">0</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer edit url" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">customer_edit_url_path</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Customer" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}${customer_edit_url_path}</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert edit customer page" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-1422614550">Customer Information</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer entity_id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_entity_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"entity_id":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract website_id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_website_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"website_id":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer firstname" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_firstname</stringProp>
-          <stringProp name="RegexExtractor.regex">"firstname":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer lastname" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_lastname</stringProp>
-          <stringProp name="RegexExtractor.regex">"lastname":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer email" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_email</stringProp>
-          <stringProp name="RegexExtractor.regex">"email":"([^\@]+@[^.]+.[^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract group_id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_group_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"group_id":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract store_id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_store_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"store_id":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extact created_at" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_created_at</stringProp>
-          <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract updated_at" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_updated_at</stringProp>
-          <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract is_active" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_is_active</stringProp>
-          <stringProp name="RegexExtractor.regex">"is_active":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract disable_auto_group_change" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_disable_auto_group_change</stringProp>
-          <stringProp name="RegexExtractor.regex">"disable_auto_group_change":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract created_in" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_created_in</stringProp>
-          <stringProp name="RegexExtractor.regex">"created_in":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract dob" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_dob</stringProp>
-          <stringProp name="RegexExtractor.regex">"dob":"(\d+)-(\d+)-(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$2$/$3$/$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_billing" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_default_billing</stringProp>
-          <stringProp name="RegexExtractor.regex">"default_billing":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_shipping" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_default_shipping</stringProp>
-          <stringProp name="RegexExtractor.regex">"default_shipping":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract gender" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_gender</stringProp>
-          <stringProp name="RegexExtractor.regex">"gender":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract failures_num" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_failures_num</stringProp>
-          <stringProp name="RegexExtractor.regex">"failures_num":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_entity_id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_entity_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{"entity_id":"(\d+)".+?"parent_id":"${admin_customer_entity_id}"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-       <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_created_at" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_created_at</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"created_at":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_updated_at" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_updated_at</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"updated_at":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_is_active" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_is_active</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"is_active":"(\d+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_city" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_city</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"city":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_country_id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_country_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"country_id":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_firstname" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_firstname</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"firstname":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_lastname" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_lastname</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"lastname":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_postcode" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_postcode</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"postcode":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_region</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"region":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region_id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_region_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"region_id":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address street" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_street</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"street":\["([^"]+)"\]</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_telephone" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_telephone</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"telephone":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_customer_id" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">admin_customer_address_customer_id</stringProp>
-          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"customer_id":"([^"]+)"</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default"/>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer entity_id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_entity_id</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert website_id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_website_id</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer firstname" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_firstname</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer lastname" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_lastname</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer email" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_email</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer group_id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_group_id</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer store_id" enabled="true">
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/save/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
           <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
+            <stringProp name="-398886250">You saved the page.</stringProp>
           </collectionProp>
           <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
           <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_store_id</stringProp>
+          <intProp name="Assertion.test_type">16</intProp>
         </ResponseAssertion>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_at" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_created_at</stringProp>
-        </ResponseAssertion>
+      </hashTree>
+      <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
+        <intProp name="ActionProcessor.action">1</intProp>
+        <intProp name="ActionProcessor.target">0</intProp>
+        <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCMSManagementDelay}*1000))}</stringProp>
+      </TestAction>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Browse Product Grid" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${browseProductGridPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer updated_at" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_updated_at</stringProp>
-        </ResponseAssertion>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Browse Product Grid");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer is_active" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_is_active</stringProp>
-        </ResponseAssertion>
+    
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer disable_auto_group_change" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_disable_auto_group_change</stringProp>
-        </ResponseAssertion>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_in" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_created_in</stringProp>
-        </ResponseAssertion>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="dummy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer dob" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="221072919">^\d+/\d+/\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_dob</stringProp>
-        </ResponseAssertion>
+    </hashTree>
+  </hashTree>
+  
+    <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
+      <stringProp name="script">
+        vars.put("gridEntityType" , "Product");
+
+        pagesCount = parseInt(vars.get("products_page_size")) || 20;
+        vars.put("grid_entity_page_size" , pagesCount);
+        vars.put("grid_namespace" , "product_listing");
+        vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_product_filter_text"));
+        vars.put("grid_filter_field", "name");
+
+        // set sort fields and sort directions
+        vars.put("grid_sort_field_1", "name");
+        vars.put("grid_sort_field_2", "price");
+        vars.put("grid_sort_field_3", "attribute_set_id");
+        vars.put("grid_sort_order_1", "asc");
+        vars.put("grid_sort_order_2", "desc");
+      </stringProp>
+      <stringProp name="scriptLanguage">javascript</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/setup.jmx</stringProp></JSR223PostProcessor>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_namespace}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
+        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
+        <stringProp name="EXPECTED_VALUE">0</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">true</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
+        <stringProp name="VAR">entity_total_records</stringProp>
+        <stringProp name="JSONPATH">$.totalRecords</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
+        <stringProp name="cacheKey"/>
+        <stringProp name="filename"/>
+        <stringProp name="parameters"/>
+        <stringProp name="script">
+          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
+          var totalsRecord = parseInt(vars.get("entity_total_records"));
+          var pageCount = Math.round(totalsRecord/pageSize);
+
+          vars.put("grid_pages_count", pageCount);
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+      </JSR223PostProcessor>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_namespace}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
+        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
+        <stringProp name="EXPECTED_VALUE">0</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">true</boolProp>
+        <boolProp name="ISREGEX">true</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
+        <stringProp name="VAR">entity_total_records</stringProp>
+        <stringProp name="JSONPATH">$.totalRecords</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
+var totalsRecord = parseInt(vars.get("entity_total_records"));
+var pageCount = Math.round(totalsRecord/pageSize);
+
+vars.put("grid_pages_count_filtered", pageCount);
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+      </JSR223PostProcessor>
+      <hashTree/>
+    </hashTree>
+  
+    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
+      <stringProp name="CounterConfig.start">1</stringProp>
+      <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
+      <stringProp name="CounterConfig.incr">1</stringProp>
+      <stringProp name="CounterConfig.name">page_number</stringProp>
+      <stringProp name="CounterConfig.format"/>
+      <boolProp name="CounterConfig.per_user">true</boolProp>
+      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
+    <hashTree/>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_namespace}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${page_number}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
+      <stringProp name="CounterConfig.start">1</stringProp>
+      <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
+      <stringProp name="CounterConfig.incr">1</stringProp>
+      <stringProp name="CounterConfig.name">page_number</stringProp>
+      <stringProp name="CounterConfig.format"/>
+      <boolProp name="CounterConfig.per_user">true</boolProp>
+      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
+    <hashTree/>
+  
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
+</TestFragmentController>
+    <hashTree>
+      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
+        <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
+        <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
+        <boolProp name="ForeachController.useSeparator">true</boolProp>
+        <stringProp name="ForeachController.startIndex">0</stringProp>
+        <stringProp name="ForeachController.endIndex">3</stringProp>
+      </ForeachController>
+      <hashTree>
+        <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
+          <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
+          <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
+          <boolProp name="ForeachController.useSeparator">true</boolProp>
+          <stringProp name="ForeachController.startIndex">0</stringProp>
+          <stringProp name="ForeachController.endIndex">2</stringProp>
+        </ForeachController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="namespace" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_namespace}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">namespace</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">filters[placeholder]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">paging[pageSize]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="paging[current]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${page_number}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">paging[current]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="sorting[field]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_sort_field}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">sorting[field]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="sorting[direction]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_sort_order}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">sorting[direction]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="isAjax" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">true</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">isAjax</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </HTTPSamplerProxy>
+          <hashTree>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+              <collectionProp name="Asserion.test_strings">
+                <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
+              </collectionProp>
+              <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+              <boolProp name="Assertion.assume_success">false</boolProp>
+              <intProp name="Assertion.test_type">2</intProp>
+            </ResponseAssertion>
+            <hashTree/>
+          </hashTree>
+        </hashTree>
+      </hashTree>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Browse Order Grid" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${browseOrderGridPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_billing" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_default_billing</stringProp>
-        </ResponseAssertion>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Browse Order Grid");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_shipping" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_default_shipping</stringProp>
-        </ResponseAssertion>
+    
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer gender" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_gender</stringProp>
-        </ResponseAssertion>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer failures_num" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_failures_num</stringProp>
-        </ResponseAssertion>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="dummy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
+      <stringProp name="script">
+        vars.put("gridEntityType" , "Order");
+
+        pagesCount = parseInt(vars.get("orders_page_size")) || 20;
+        vars.put("grid_entity_page_size" , pagesCount);
+        vars.put("grid_namespace" , "sales_order_grid");
+        vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_orders_filter_text"));
+        vars.put("grid_filter_field", "status");
+
+        // set sort fields and sort directions
+        vars.put("grid_sort_field_1", "increment_id");
+        vars.put("grid_sort_field_2", "created_at");
+        vars.put("grid_sort_field_3", "billing_name");
+        vars.put("grid_sort_order_1", "asc");
+        vars.put("grid_sort_order_2", "desc");
+      </stringProp>
+      <stringProp name="scriptLanguage">javascript</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_orders_grid/setup.jmx</stringProp></JSR223PostProcessor>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_namespace}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
+        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
+        <stringProp name="EXPECTED_VALUE">0</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">true</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
+        <stringProp name="VAR">entity_total_records</stringProp>
+        <stringProp name="JSONPATH">$.totalRecords</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
+        <stringProp name="cacheKey"/>
+        <stringProp name="filename"/>
+        <stringProp name="parameters"/>
+        <stringProp name="script">
+          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
+          var totalsRecord = parseInt(vars.get("entity_total_records"));
+          var pageCount = Math.round(totalsRecord/pageSize);
+
+          vars.put("grid_pages_count", pageCount);
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+      </JSR223PostProcessor>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_namespace}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
+        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
+        <stringProp name="EXPECTED_VALUE">0</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">true</boolProp>
+        <boolProp name="ISREGEX">true</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
+        <stringProp name="VAR">entity_total_records</stringProp>
+        <stringProp name="JSONPATH">$.totalRecords</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
+var totalsRecord = parseInt(vars.get("entity_total_records"));
+var pageCount = Math.round(totalsRecord/pageSize);
+
+vars.put("grid_pages_count_filtered", pageCount);
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+      </JSR223PostProcessor>
+      <hashTree/>
+    </hashTree>
+  
+    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
+      <stringProp name="CounterConfig.start">1</stringProp>
+      <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
+      <stringProp name="CounterConfig.incr">1</stringProp>
+      <stringProp name="CounterConfig.name">page_number</stringProp>
+      <stringProp name="CounterConfig.format"/>
+      <boolProp name="CounterConfig.per_user">true</boolProp>
+      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
+    <hashTree/>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_namespace}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${page_number}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
+      <stringProp name="CounterConfig.start">1</stringProp>
+      <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
+      <stringProp name="CounterConfig.incr">1</stringProp>
+      <stringProp name="CounterConfig.name">page_number</stringProp>
+      <stringProp name="CounterConfig.format"/>
+      <boolProp name="CounterConfig.per_user">true</boolProp>
+      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
+    <hashTree/>
+  
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
+</TestFragmentController>
+    <hashTree>
+      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
+        <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
+        <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
+        <boolProp name="ForeachController.useSeparator">true</boolProp>
+        <stringProp name="ForeachController.startIndex">0</stringProp>
+        <stringProp name="ForeachController.endIndex">3</stringProp>
+      </ForeachController>
+      <hashTree>
+        <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
+          <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
+          <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
+          <boolProp name="ForeachController.useSeparator">true</boolProp>
+          <stringProp name="ForeachController.startIndex">0</stringProp>
+          <stringProp name="ForeachController.endIndex">2</stringProp>
+        </ForeachController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="namespace" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_namespace}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">namespace</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">filters[placeholder]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">paging[pageSize]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="paging[current]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${page_number}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">paging[current]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="sorting[field]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_sort_field}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">sorting[field]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="sorting[direction]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_sort_order}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">sorting[direction]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="isAjax" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">true</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">isAjax</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </HTTPSamplerProxy>
+          <hashTree>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+              <collectionProp name="Asserion.test_strings">
+                <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
+              </collectionProp>
+              <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+              <boolProp name="Assertion.assume_success">false</boolProp>
+              <intProp name="Assertion.test_type">2</intProp>
+            </ResponseAssertion>
+            <hashTree/>
+          </hashTree>
+        </hashTree>
+      </hashTree>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  </hashTree>
+
+    
+        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="CSR Pool" enabled="true">
+            <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+            <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+                <boolProp name="LoopController.continue_forever">false</boolProp>
+                <stringProp name="LoopController.loops">${loops}</stringProp>
+            </elementProp>
+            <stringProp name="ThreadGroup.num_threads">${csrPoolUsers}</stringProp>
+            <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
+            <longProp name="ThreadGroup.start_time">1505803944000</longProp>
+            <longProp name="ThreadGroup.end_time">1505803944000</longProp>
+            <boolProp name="ThreadGroup.scheduler">false</boolProp>
+            <stringProp name="ThreadGroup.duration"/>
+            <stringProp name="ThreadGroup.delay"/>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
+        <hashTree>
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Returns Management" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${adminReturnsManagementPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_entity_id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_entity_id</stringProp>
-        </ResponseAssertion>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Admin Returns Management");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_created_at" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_created_at</stringProp>
-        </ResponseAssertion>
+    
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_updated_at" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_updated_at</stringProp>
-        </ResponseAssertion>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_is_active" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_is_active</stringProp>
-        </ResponseAssertion>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="dummy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_city" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_city</stringProp>
-        </ResponseAssertion>
+    </hashTree>
+  </hashTree>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments"/>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="1204796042">Create New Order</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+  </hashTree>
+
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments">
+        <elementProp name="namespace" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">sales_order_grid</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">namespace</stringProp>
+        </elementProp>
+        <elementProp name="search" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value"/>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">search</stringProp>
+        </elementProp>
+        <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">true</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">filters[placeholder]</stringProp>
+        </elementProp>
+        <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">200</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">paging[pageSize]</stringProp>
+        </elementProp>
+        <elementProp name="paging[current]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">paging[current]</stringProp>
+        </elementProp>
+        <elementProp name="sorting[field]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">increment_id</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">sorting[field]</stringProp>
+        </elementProp>
+        <elementProp name="sorting[direction]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">desc</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">sorting[direction]</stringProp>
+        </elementProp>
+        <elementProp name="isAjax" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">true</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">isAjax</stringProp>
+        </elementProp>
+        <elementProp name="form_key" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${admin_form_key}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">form_key</stringProp>
+          <stringProp name="Argument.desc">false</stringProp>
+        </elementProp>
+        <elementProp name="filters[status]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">pending</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">filters[status]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="_" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">_</stringProp>
+        </elementProp>
+      </collectionProp>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="1637639774">totalRecords</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+  </hashTree>
+
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments">
+        <elementProp name="form_key" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${admin_form_key}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">form_key</stringProp>
+        </elementProp>
+        <elementProp name="namespace" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">sales_order_grid</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">namespace</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="search" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value"/>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">search</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">true</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">filters[placeholder]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">200</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">paging[pageSize]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="paging[current]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">paging[current]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="sorting[field]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">increment_id</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">sorting[field]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="sorting[direction]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">asc</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">sorting[direction]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="isAjax" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">true</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">isAjax</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="filters[status]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">pending</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">filters[status]</stringProp>
+        </elementProp>
+        <elementProp name="_" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">_</stringProp>
+        </elementProp>
+      </collectionProp>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
+<hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1637639774">totalRecords</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
+        <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">-1</stringProp>
+        <stringProp name="Scope.variable">simple_products</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">order_ids</stringProp>
+        <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">-1</stringProp>
+        <stringProp name="Scope.variable">simple_products</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+    </hashTree>
+
+      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
+        <stringProp name="BeanShellSampler.query">
+  import java.util.ArrayList;
+  import java.util.HashMap;
+  import org.apache.jmeter.protocol.http.util.Base64Encoder;
+  import java.util.Random;
+
+  // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
+  int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
+
+
+  int clusterLength;
+  int threadsNumber = ctx.getThreadGroup().getNumThreads();
+  if (threadsNumber == 0) {
+      //Number of orders for one thread
+      clusterLength = ordersCount;
+  } else {
+      clusterLength = Math.round(ordersCount / threadsNumber);
+      if (clusterLength == 0) {
+          clusterLength = 1;
+      }
+  }
+
+  //Current thread number starts from 0
+  int currentThreadNum = ctx.getThreadNum();
+
+  //Index of the current product from the cluster
+  Random random = new Random();
+  int iterator = random.nextInt(clusterLength);
+  if (iterator == 0) {
+  	iterator = 1;
+  }
+
+  int i = clusterLength * currentThreadNum + iterator;
+
+  orderNumber = vars.get("order_numbers_" + i.toString());
+  orderId = vars.get("order_ids_" + i.toString());
+  vars.put("order_number", orderNumber);
+  vars.put("order_id", orderId);
+
+  </stringProp>
+    <stringProp name="BeanShellSampler.filename"/>
+    <stringProp name="BeanShellSampler.parameters"/>
+    <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+  </BeanShellSampler>
+  <hashTree/>
+
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments"/>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="2103620713">#${order_number}</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
+      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+      <stringProp name="RegexExtractor.refname">order_status</stringProp>
+      <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
+      <stringProp name="RegexExtractor.template">$1$</stringProp>
+      <stringProp name="RegexExtractor.default"/>
+      <stringProp name="RegexExtractor.match_number">1</stringProp>
+      <stringProp name="Scope.variable">simple_products</stringProp>
+    </RegexExtractor>
+    <hashTree/>
+  </hashTree>
+
+    <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+      <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
+      <boolProp name="IfController.evaluateAll">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
+    <hashTree>
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments"/>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="-1233850814">Invoice Totals</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
+      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+      <stringProp name="RegexExtractor.refname">item_ids</stringProp>
+      <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
+      <stringProp name="RegexExtractor.template">$1$</stringProp>
+      <stringProp name="RegexExtractor.default"/>
+      <stringProp name="RegexExtractor.match_number">-1</stringProp>
+      <stringProp name="Scope.variable">simple_products</stringProp>
+    </RegexExtractor>
+    <hashTree/>
+  </hashTree>
+
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments">
+        <elementProp name="form_key" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${admin_form_key}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">form_key</stringProp>
+          <stringProp name="Argument.desc">false</stringProp>
+        </elementProp>
+        <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
+        </elementProp>
+        <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
+        </elementProp>
+        <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">Invoiced</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">invoice[comment_text]</stringProp>
+        </elementProp>
+      </collectionProp>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
+    <stringProp name="HTTPSampler.method">POST</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="1740524604">The invoice has been created</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+  </hashTree>
+
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Start" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments"/>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/start/order_id/${order_id}/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/credit_memo_start.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="1382627322">New Memo</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+  </hashTree>
+
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Submit - Full Refund" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments">
+        <elementProp name="form_key" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${admin_form_key}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">form_key</stringProp>
+          <stringProp name="Argument.desc">false</stringProp>
+        </elementProp>
+        <elementProp name="creditmemo[items][${item_ids_1}][qty]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">creditmemo[items][${item_ids_1}][qty]</stringProp>
+        </elementProp>
+        <elementProp name="creditmemo[items][${item_ids_2}][qty]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">creditmemo[items][${item_ids_2}][qty]</stringProp>
+        </elementProp>
+        <elementProp name="creditmemo[do_offline]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">creditmemo[do_offline]</stringProp>
+        </elementProp>
+        <elementProp name="creditmemo[comment_text]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">Credit Memo added</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">creditmemo[comment_text]</stringProp>
+        </elementProp>
+        <elementProp name="creditmemo[shipping_amount]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">10</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">creditmemo[shipping_amount]</stringProp>
+        </elementProp>
+        <elementProp name="creditmemo[adjustment_positive]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">0</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">creditmemo[adjustment_positive]</stringProp>
+        </elementProp>
+        <elementProp name="creditmemo[adjustment_negative]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">0</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">creditmemo[adjustment_negative]</stringProp>
+        </elementProp>
+      </collectionProp>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/save/order_id/${order_id}/</stringProp>
+    <stringProp name="HTTPSampler.method">POST</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/credit_memo_full_refund.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-515117447">You created the credit memo</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+    <hashTree/>
+  </hashTree>
+
+    <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Create/Process Returns - Pause" enabled="true">
+      <intProp name="ActionProcessor.action">1</intProp>
+      <intProp name="ActionProcessor.target">0</intProp>
+      <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCreateProcessReturnsDelay}*1000))}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/pause.jmx</stringProp></TestAction>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Browse Customer Grid" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${browseCustomerGridPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_country_id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_country_id</stringProp>
-        </ResponseAssertion>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Browse Customer Grid");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_firstname" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_firstname</stringProp>
-        </ResponseAssertion>
+    
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_lastname" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_lastname</stringProp>
-        </ResponseAssertion>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_postcode" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_postcode</stringProp>
-        </ResponseAssertion>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="dummy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_region</stringProp>
-        </ResponseAssertion>
+    </hashTree>
+  </hashTree>
+  
+    <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
+      <stringProp name="script">
+        vars.put("gridEntityType" , "Customer");
+
+        pagesCount = parseInt(vars.get("customers_page_size")) || 20;
+        vars.put("grid_entity_page_size" , pagesCount);
+        vars.put("grid_namespace" , "customer_listing");
+        vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_customer_filter_text"));
+        vars.put("grid_filter_field", "name");
+
+        // set sort fields and sort directions
+        vars.put("grid_sort_field_1", "name");
+        vars.put("grid_sort_field_2", "group_id");
+        vars.put("grid_sort_field_3", "billing_country_id");
+        vars.put("grid_sort_order_1", "asc");
+        vars.put("grid_sort_order_2", "desc");
+      </stringProp>
+      <stringProp name="scriptLanguage">javascript</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_customers_grid/setup.jmx</stringProp></JSR223PostProcessor>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_namespace}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
+        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
+        <stringProp name="EXPECTED_VALUE">0</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">true</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
+        <stringProp name="VAR">entity_total_records</stringProp>
+        <stringProp name="JSONPATH">$.totalRecords</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
+        <stringProp name="cacheKey"/>
+        <stringProp name="filename"/>
+        <stringProp name="parameters"/>
+        <stringProp name="script">
+          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
+          var totalsRecord = parseInt(vars.get("entity_total_records"));
+          var pageCount = Math.round(totalsRecord/pageSize);
+
+          vars.put("grid_pages_count", pageCount);
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+      </JSR223PostProcessor>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_namespace}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
+        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
+        <stringProp name="EXPECTED_VALUE">0</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">true</boolProp>
+        <boolProp name="ISREGEX">true</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
+        <stringProp name="VAR">entity_total_records</stringProp>
+        <stringProp name="JSONPATH">$.totalRecords</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
+var totalsRecord = parseInt(vars.get("entity_total_records"));
+var pageCount = Math.round(totalsRecord/pageSize);
+
+vars.put("grid_pages_count_filtered", pageCount);
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+      </JSR223PostProcessor>
+      <hashTree/>
+    </hashTree>
+  
+    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
+      <stringProp name="CounterConfig.start">1</stringProp>
+      <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
+      <stringProp name="CounterConfig.incr">1</stringProp>
+      <stringProp name="CounterConfig.name">page_number</stringProp>
+      <stringProp name="CounterConfig.format"/>
+      <boolProp name="CounterConfig.per_user">true</boolProp>
+      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
+    <hashTree/>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_namespace}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${page_number}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
+      <stringProp name="CounterConfig.start">1</stringProp>
+      <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
+      <stringProp name="CounterConfig.incr">1</stringProp>
+      <stringProp name="CounterConfig.name">page_number</stringProp>
+      <stringProp name="CounterConfig.format"/>
+      <boolProp name="CounterConfig.per_user">true</boolProp>
+      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
+    <hashTree/>
+  
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
+</TestFragmentController>
+    <hashTree>
+      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
+        <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
+        <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
+        <boolProp name="ForeachController.useSeparator">true</boolProp>
+        <stringProp name="ForeachController.startIndex">0</stringProp>
+        <stringProp name="ForeachController.endIndex">3</stringProp>
+      </ForeachController>
+      <hashTree>
+        <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
+          <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
+          <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
+          <boolProp name="ForeachController.useSeparator">true</boolProp>
+          <stringProp name="ForeachController.startIndex">0</stringProp>
+          <stringProp name="ForeachController.endIndex">2</stringProp>
+        </ForeachController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="namespace" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_namespace}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">namespace</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">filters[placeholder]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">paging[pageSize]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="paging[current]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${page_number}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">paging[current]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="sorting[field]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_sort_field}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">sorting[field]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="sorting[direction]" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${grid_sort_order}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">sorting[direction]</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+                <elementProp name="isAjax" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">true</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">isAjax</stringProp>
+                  <stringProp name="Argument.desc">false</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </HTTPSamplerProxy>
+          <hashTree>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+              <collectionProp name="Asserion.test_strings">
+                <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
+              </collectionProp>
+              <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+              <boolProp name="Assertion.assume_success">false</boolProp>
+              <intProp name="Assertion.test_type">2</intProp>
+            </ResponseAssertion>
+            <hashTree/>
+          </hashTree>
+        </hashTree>
+      </hashTree>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Create Order" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${adminCreateOrderPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region_id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_region_id</stringProp>
-        </ResponseAssertion>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Admin Create Order");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_street" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_street</stringProp>
-        </ResponseAssertion>
+    
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_telephone" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="2845929">^.+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_telephone</stringProp>
-        </ResponseAssertion>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
         <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_customer_id" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="89649215">^\d+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_customer_address_customer_id</stringProp>
-        </ResponseAssertion>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="dummy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
         <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Order" enabled="true"/>
+    <hashTree>
+      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_order/admin_create_order.jmx</stringProp>
+        <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
+import java.util.Random;
+Random random = new Random();
+if (${seedForRandom} &gt; 0) {
+  random.setSeed(${seedForRandom});
+}
+number = random.nextInt(props.get("simple_products_list").size());
+simpleList = props.get("simple_products_list").get(number);
+vars.put("simple_product_1_url_key", simpleList.get("url_key"));
+vars.put("simple_product_1_name", simpleList.get("title"));
+vars.put("simple_product_1_id", simpleList.get("id"));
+
+do {
+    number1 = random.nextInt(props.get("simple_products_list").size());
+} while(number == number1);
+simpleList = props.get("simple_products_list").get(number1);
+vars.put("simple_product_2_url_key", simpleList.get("url_key"));
+vars.put("simple_product_2_name", simpleList.get("title"));
+vars.put("simple_product_2_id", simpleList.get("id"));
+
+number = random.nextInt(props.get("configurable_products_list").size());
+configurableList = props.get("configurable_products_list").get(number);
+vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
+vars.put("configurable_product_1_name", configurableList.get("title"));
+vars.put("configurable_product_1_id", configurableList.get("id"));
+vars.put("configurable_product_1_sku", configurableList.get("sku"));
+vars.put("configurable_attribute_id", configurableList.get("attribute_id"));
+vars.put("configurable_option_id", configurableList.get("attribute_option_id"));
+
+
+customers_index = 0;
+if (!props.containsKey("customer_ids_index")) {
+	props.put("customer_ids_index", customers_index);
+}
+
+try {
+	customers_index = props.get("customer_ids_index");
+	customers_list = props.get("customer_ids_list");
+
+	if (customers_index == customers_list.size()) {
+		customers_index=0;
+	}
+	vars.put("customer_id", customers_list.get(customers_index));
+	props.put("customer_ids_index", ++customers_index);
+}
+catch (java.lang.Exception e) {
+	   log.error("Caught Exception in 'Admin Create Order' thread.");
+	   SampleResult.setStopThread(true);
+}</stringProp>
+        <stringProp name="BeanShellSampler.filename"/>
+        <stringProp name="BeanShellSampler.parameters"/>
+        <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+      </BeanShellSampler>
+      <hashTree/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Start Order" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/start/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+        <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
+      </HTTPSamplerProxy>
+      <hashTree/>
+      <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Configurable Product Options" enabled="true"/>
+      <hashTree>
         <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
           <collectionProp name="HeaderManager.headers">
-            <elementProp name="Accept-Language" elementType="Header">
-              <stringProp name="Header.name">Accept-Language</stringProp>
-              <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
+            <elementProp name="" elementType="Header">
+              <stringProp name="Header.name">Content-Type</stringProp>
+              <stringProp name="Header.value">application/json</stringProp>
             </elementProp>
-            <elementProp name="Accept" elementType="Header">
+            <elementProp name="" elementType="Header">
               <stringProp name="Header.name">Accept</stringProp>
-              <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
-            </elementProp>
-            <elementProp name="User-Agent" elementType="Header">
-              <stringProp name="Header.name">User-Agent</stringProp>
-              <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
-            </elementProp>
-            <elementProp name="Accept-Encoding" elementType="Header">
-              <stringProp name="Header.name">Accept-Encoding</stringProp>
-              <stringProp name="Header.value">gzip, deflate</stringProp>
+              <stringProp name="Header.value">*/*</stringProp>
             </elementProp>
           </collectionProp>
         </HeaderManager>
         <hashTree/>
-      </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Validate" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="isAjax   " elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax   </stringProp>
-            </elementProp>
-            <elementProp name="customer[entity_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[entity_id]</stringProp>
-            </elementProp>
-            <elementProp name="customer[website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[website_id]</stringProp>
-            </elementProp>
-            <elementProp name="customer[email]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_email}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[email]</stringProp>
-            </elementProp>
-            <elementProp name="customer[group_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[group_id]</stringProp>
-            </elementProp>
-            <elementProp name="customer[store_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[store_id]</stringProp>
-            </elementProp>
-            <elementProp name="customer[created_at]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[created_at]</stringProp>
-            </elementProp>
-            <elementProp name="customer[updated_at]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[updated_at]</stringProp>
-            </elementProp>
-            <elementProp name="customer[is_active]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[is_active]</stringProp>
-            </elementProp>
-            <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
-            </elementProp>
-            <elementProp name="customer[created_in]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[created_in]</stringProp>
-            </elementProp>
-            <elementProp name="customer[prefix]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[prefix]</stringProp>
-            </elementProp>
-            <elementProp name="customer[firstname]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[firstname]</stringProp>
-            </elementProp>
-            <elementProp name="customer[middlename]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[middlename]</stringProp>
-            </elementProp>
-            <elementProp name="customer[lastname]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[lastname]</stringProp>
-            </elementProp>
-            <elementProp name="customer[suffix]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[suffix]</stringProp>
-            </elementProp>
-            <elementProp name="customer[dob]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[dob]</stringProp>
-            </elementProp>
-            <elementProp name="customer[default_billing]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[default_billing]</stringProp>
-            </elementProp>
-            <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[default_shipping]</stringProp>
-            </elementProp>
-            <elementProp name="customer[taxvat]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[taxvat]</stringProp>
-            </elementProp>
-            <elementProp name="customer[gender]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[gender]</stringProp>
-            </elementProp>
-            <elementProp name="customer[failures_num]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[failures_num]</stringProp>
-            </elementProp>
-            <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
+          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+            <collectionProp name="Arguments.arguments">
+              <elementProp name="" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+              </elementProp>
+            </collectionProp>
+          </elementProp>
+          <stringProp name="HTTPSampler.domain"/>
+          <stringProp name="HTTPSampler.port"/>
+          <stringProp name="HTTPSampler.connect_timeout"/>
+          <stringProp name="HTTPSampler.response_timeout"/>
+          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"/>
+          <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
+          <stringProp name="HTTPSampler.method">POST</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <boolProp name="HTTPSampler.monitor">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"/>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+            <stringProp name="VAR">admin_token</stringProp>
+            <stringProp name="JSONPATH">$</stringProp>
+            <stringProp name="DEFAULT"/>
+            <stringProp name="VARIABLE"/>
+            <stringProp name="SUBJECT">BODY</stringProp>
+          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+          <hashTree/>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
+            <collectionProp name="Asserion.test_strings">
+              <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
+            </collectionProp>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">1</intProp>
+            <stringProp name="Assertion.scope">variable</stringProp>
+            <stringProp name="Scope.variable">admin_token</stringProp>
+          </ResponseAssertion>
+          <hashTree/>
+        </hashTree>
+        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+          <collectionProp name="HeaderManager.headers">
+            <elementProp name="" elementType="Header">
+              <stringProp name="Header.name">Authorization</stringProp>
+              <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
+          </collectionProp>
+        </HeaderManager>
+        <hashTree/>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Configurable Product Options" enabled="true">
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.domain"/>
+          <stringProp name="HTTPSampler.port"/>
+          <stringProp name="HTTPSampler.connect_timeout"/>
+          <stringProp name="HTTPSampler.response_timeout"/>
+          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"/>
+          <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${configurable_product_1_sku}/options/all</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <boolProp name="HTTPSampler.monitor">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"/>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="JSON Path Extractor: Extract attribute_ids" enabled="true">
+            <stringProp name="VAR">attribute_ids</stringProp>
+            <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
+            <stringProp name="DEFAULT">NO_VALUE</stringProp>
+            <stringProp name="VARIABLE"/>
+            <stringProp name="SUBJECT">BODY</stringProp>
+          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+          <hashTree/>
+          <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="JSON Path Extractor: Extract option_values" enabled="true">
+            <stringProp name="VAR">option_values</stringProp>
+            <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
+            <stringProp name="DEFAULT">NO_VALUE</stringProp>
+            <stringProp name="VARIABLE"/>
+            <stringProp name="SUBJECT">BODY</stringProp>
+          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Products" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="item[${simple_product_1_id}][qty]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
+              <stringProp name="Argument.name">item[${simple_product_1_id}][qty]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
+            <elementProp name="item[${simple_product_2_id}][qty]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">item[${simple_product_2_id}][qty]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
+            <elementProp name="item[${configurable_product_1_id}][qty]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
+              <stringProp name="Argument.name">item[${configurable_product_1_id}][qty]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
+            <elementProp name="customer_id" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.name">customer_id</stringProp>
+              <stringProp name="Argument.value">${customer_id}</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
+            <elementProp name="store_id" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.name">store_id</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
+            <elementProp name="currency_id" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">currency_id</stringProp>
               <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
-            </elementProp>
-            <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">John</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
+            <elementProp name="form_key" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
+            <elementProp name="payment[method]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Doe</stringProp>
+              <stringProp name="Argument.name">payment[method]</stringProp>
+              <stringProp name="Argument.value">checkmo</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
+            <elementProp name="reset_shipping" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">reset_shipping</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][company]" elementType="HTTPArgument">
+            <elementProp name="json" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Test Company</stringProp>
+              <stringProp name="Argument.name">json</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][company]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][city]" elementType="HTTPArgument">
+            <elementProp name="as_js_varname" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Folsom</stringProp>
+              <stringProp name="Argument.name">as_js_varname</stringProp>
+              <stringProp name="Argument.value">iFrameResponse</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][city]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
+            <elementProp name="form_key" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">95630</stringProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/search,items,shipping_method,totals,giftmessage,billing_method?isAjax=true</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+        <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
+          <boolProp name="resetInterpreter">false</boolProp>
+          <stringProp name="parameters"/>
+          <stringProp name="filename"/>
+          <stringProp name="script">try {
+	attribute_ids = vars.get("attribute_ids");
+	option_values = vars.get("option_values");
+	attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
+	option_values = option_values.replace("[","").replace("]","").replace("\"", "");
+	attribute_ids_array = attribute_ids.split(",");
+	option_values_array = option_values.split(",");
+	args = ctx.getCurrentSampler().getArguments();
+	it = args.iterator();
+	while (it.hasNext()) {
+	    argument = it.next();
+	    if (argument.getStringValue().contains("${")) {
+	        args.removeArgument(argument.getName());
+	    }
+	}
+	for (int i = 0; i &lt; attribute_ids_array.length; i++) {
+
+    ctx.getCurrentSampler().addArgument("item[" + vars.get("configurable_product_1_id") + "][super_attribute][" + attribute_ids_array[i] + "]", option_values_array[i]);
+	}
+} catch (Exception e) {
+    log.error("error???", e);
+}</stringProp>
+        </BeanShellPreProcessor>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Collect Shipping Rates" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="collect_shipping_rates" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1234567890</stringProp>
+              <stringProp name="Argument.name">collect_shipping_rates</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
+            <elementProp name="customer_id" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">customer_id</stringProp>
+              <stringProp name="Argument.value">${customer_id}</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
+            <elementProp name="store_id" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">false</stringProp>
+              <stringProp name="Argument.name">store_id</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
+            <elementProp name="currency_id" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">currency_id</stringProp>
               <stringProp name="Argument.value">false</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
-            </elementProp>
-            <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">123 Main</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
-            </elementProp>
-            <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
-            </elementProp>
-            <elementProp name="address[new_0][region]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][region]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
+            <elementProp name="form_key" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">US</stringProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
+            <elementProp name="payment[method]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">12</stringProp>
+              <stringProp name="Argument.name">payment[method]</stringProp>
+              <stringProp name="Argument.value">checkmo</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
             </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
+            <elementProp name="json" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.name">json</stringProp>
+              <stringProp name="Argument.value">true</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
             </elementProp>
           </collectionProp>
         </elementProp>
@@ -24420,7 +14686,7 @@ if (testLabel
         <stringProp name="HTTPSampler.response_timeout"/>
         <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
         <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/validate/</stringProp>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/shipping_method,totals?isAjax=true</stringProp>
         <stringProp name="HTTPSampler.method">POST</stringProp>
         <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
         <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -24430,460 +14696,569 @@ if (testLabel
         <stringProp name="HTTPSampler.embedded_url_re"/>
       </HTTPSamplerProxy>
       <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipping Method" enabled="true">
           <collectionProp name="Asserion.test_strings">
-            <stringProp name="49586">200</stringProp>
+            <stringProp name="-1987784558">shipping_method</stringProp>
+            <stringProp name="818779431">Flat Rate</stringProp>
           </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
           <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">16</intProp>
+          <intProp name="Assertion.test_type">2</intProp>
         </ResponseAssertion>
         <hashTree/>
       </hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Save" enabled="true">
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Order" enabled="true">
         <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
           <collectionProp name="Arguments.arguments">
-            <elementProp name="isAjax   " elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">isAjax   </stringProp>
-            </elementProp>
-            <elementProp name="customer[entity_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[entity_id]</stringProp>
-            </elementProp>
-            <elementProp name="customer[website_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[website_id]</stringProp>
-            </elementProp>
-            <elementProp name="customer[email]" elementType="HTTPArgument">
+            <elementProp name="form_key" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_email}</stringProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[email]</stringProp>
             </elementProp>
-            <elementProp name="customer[group_id]" elementType="HTTPArgument">
+            <elementProp name="limit" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
+              <stringProp name="Argument.name">limit</stringProp>
+              <stringProp name="Argument.value">20</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[group_id]</stringProp>
             </elementProp>
-            <elementProp name="customer[store_id]" elementType="HTTPArgument">
+            <elementProp name="entity_id" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
+              <stringProp name="Argument.name">entity_id</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[store_id]</stringProp>
             </elementProp>
-            <elementProp name="customer[created_at]" elementType="HTTPArgument">
+            <elementProp name="name" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
+              <stringProp name="Argument.name">name</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[created_at]</stringProp>
             </elementProp>
-            <elementProp name="customer[updated_at]" elementType="HTTPArgument">
+            <elementProp name="email" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
+              <stringProp name="Argument.name">email</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[updated_at]</stringProp>
             </elementProp>
-            <elementProp name="customer[is_active]" elementType="HTTPArgument">
+            <elementProp name="Telephone" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
+              <stringProp name="Argument.name">Telephone</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[is_active]</stringProp>
             </elementProp>
-            <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
+            <elementProp name="billing_postcode" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
+              <stringProp name="Argument.name">billing_postcode</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
             </elementProp>
-            <elementProp name="customer[created_in]" elementType="HTTPArgument">
+            <elementProp name="billing_country_id" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
+              <stringProp name="Argument.name">billing_country_id</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[created_in]</stringProp>
             </elementProp>
-            <elementProp name="customer[prefix]" elementType="HTTPArgument">
+            <elementProp name="billing_regione" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">billing_regione</stringProp>
               <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[prefix]</stringProp>
             </elementProp>
-            <elementProp name="customer[firstname]" elementType="HTTPArgument">
+            <elementProp name="store_name" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
+              <stringProp name="Argument.name">store_name</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[firstname]</stringProp>
             </elementProp>
-            <elementProp name="customer[middlename]" elementType="HTTPArgument">
+            <elementProp name="page" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">page</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[middlename]</stringProp>
             </elementProp>
-            <elementProp name="customer[lastname]" elementType="HTTPArgument">
+            <elementProp name="order[currency]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
+              <stringProp name="Argument.name">order[currency]</stringProp>
+              <stringProp name="Argument.value">USD</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[lastname]</stringProp>
             </elementProp>
-            <elementProp name="customer[suffix]" elementType="HTTPArgument">
+            <elementProp name="sku" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">sku</stringProp>
               <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[suffix]</stringProp>
             </elementProp>
-            <elementProp name="customer[dob]" elementType="HTTPArgument">
+            <elementProp name="qty" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
+              <stringProp name="Argument.name">qty</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[dob]</stringProp>
             </elementProp>
-            <elementProp name="customer[default_billing]" elementType="HTTPArgument">
+            <elementProp name="limit" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
+              <stringProp name="Argument.name">limit</stringProp>
+              <stringProp name="Argument.value">20</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[default_billing]</stringProp>
             </elementProp>
-            <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
+            <elementProp name="entity_id" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
+              <stringProp name="Argument.name">entity_id</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[default_shipping]</stringProp>
             </elementProp>
-            <elementProp name="customer[taxvat]" elementType="HTTPArgument">
+            <elementProp name="name" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">name</stringProp>
               <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[taxvat]</stringProp>
             </elementProp>
-            <elementProp name="customer[gender]" elementType="HTTPArgument">
+            <elementProp name="sku" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
+              <stringProp name="Argument.name">sku</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[gender]</stringProp>
             </elementProp>
-            <elementProp name="customer[failures_num]" elementType="HTTPArgument">
+            <elementProp name="price[from]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
+              <stringProp name="Argument.name">price[from]</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[failures_num]</stringProp>
             </elementProp>
-            <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
+            <elementProp name="price[to]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
+              <stringProp name="Argument.name">price[to]</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
+            <elementProp name="in_products" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
+              <stringProp name="Argument.name">in_products</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
             </elementProp>
-
-            <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
+            <elementProp name="page" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
+              <stringProp name="Argument.name">page</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
+            <elementProp name="coupon_code" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
+              <stringProp name="Argument.name">coupon_code</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
+            <elementProp name="order[account][group_id]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
+              <stringProp name="Argument.name">order[account][group_id]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
+            <elementProp name="order[account][email]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
+              <stringProp name="Argument.name">order[account][email]</stringProp>
+              <stringProp name="Argument.value">user_${customer_id}@example.com</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][customer_address_id]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">order[billing_address][customer_address_id]</stringProp>
               <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][prefix]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
+              <stringProp name="Argument.name">order[billing_address][prefix]</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][firstname]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
+              <stringProp name="Argument.name">order[billing_address][firstname]</stringProp>
+              <stringProp name="Argument.value">Anthony</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][middlename]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">order[billing_address][middlename]</stringProp>
               <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][lastname]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
+              <stringProp name="Argument.name">order[billing_address][lastname]</stringProp>
+              <stringProp name="Argument.value">Nealy</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][suffix]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">order[billing_address][suffix]</stringProp>
               <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
-            </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][company]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
+              <stringProp name="Argument.name">order[billing_address][company]</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][street][0]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
+              <stringProp name="Argument.name">order[billing_address][street][0]</stringProp>
+              <stringProp name="Argument.value">123 Freedom Blvd. #123</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][street][1]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">order[billing_address][street][1]</stringProp>
               <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][city]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">order[billing_address][city]</stringProp>
+              <stringProp name="Argument.value">Fayetteville</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][country_id]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
+              <stringProp name="Argument.name">order[billing_address][country_id]</stringProp>
+              <stringProp name="Argument.value">US</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][region]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">order[billing_address][region]</stringProp>
               <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][region_id]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
+              <stringProp name="Argument.name">order[billing_address][region_id]</stringProp>
+              <stringProp name="Argument.value">5</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][postcode]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.name">order[billing_address][postcode]</stringProp>
+              <stringProp name="Argument.value">123123</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
             </elementProp>
-            <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][telephone]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.name">order[billing_address][telephone]</stringProp>
+              <stringProp name="Argument.value">022-333-4455</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][fax]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.name">order[billing_address][fax]</stringProp>
               <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
+            <elementProp name="order[billing_address][vat_id]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">John</stringProp>
+              <stringProp name="Argument.name">order[billing_address][vat_id]</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
+            <elementProp name="shipping_same_as_billing" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">shipping_same_as_billing</stringProp>
+              <stringProp name="Argument.value">on</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
+            <elementProp name="payment[method]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Doe</stringProp>
+              <stringProp name="Argument.name">payment[method]</stringProp>
+              <stringProp name="Argument.value">checkmo</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
+            <elementProp name="order[shipping_method]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">order[shipping_method]</stringProp>
+              <stringProp name="Argument.value">flatrate_flatrate</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][company]" elementType="HTTPArgument">
+            <elementProp name="order[comment][customer_note]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Test Company</stringProp>
+              <stringProp name="Argument.name">order[comment][customer_note]</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][company]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][city]" elementType="HTTPArgument">
+            <elementProp name="order[comment][customer_note_notify]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">Folsom</stringProp>
+              <stringProp name="Argument.name">order[comment][customer_note_notify]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][city]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
+            <elementProp name="order[send_confirmation]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">95630</stringProp>
+              <stringProp name="Argument.name">order[send_confirmation]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/save/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+        <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">order_id</stringProp>
+          <stringProp name="RegexExtractor.regex">${host}${base_path}${admin_path}/sales/order/index/order_id/(\d+)/</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 1" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">order_item_1</stringProp>
+          <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 2" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">order_item_2</stringProp>
+          <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">2</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 3" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">order_item_3</stringProp>
+          <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">3</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">order_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 1" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">order_item_1</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 2" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">order_item_2</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 3" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">order_item_3</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Created" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="563107624">You created the order.</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Invoice" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="form_key" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1234567890</stringProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
+            <elementProp name="invoice[items][${order_item_1}]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">invoice[items][${order_item_1}]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
+            <elementProp name="invoice[items][${order_item_2}]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">false</stringProp>
+              <stringProp name="Argument.name">invoice[items][${order_item_2}]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
+            <elementProp name="invoice[items][${order_item_3}]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">false</stringProp>
+              <stringProp name="Argument.name">invoice[items][${order_item_3}]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
+            <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">123 Main</stringProp>
+              <stringProp name="Argument.name">invoice[comment_text]</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+        <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Invoice Created" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-1878312078">The invoice has been created.</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Shipment" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="form_key" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][region]" elementType="HTTPArgument">
+            <elementProp name="shipment[items][${order_item_1}]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.name">shipment[items][${order_item_1}]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][region]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
+            <elementProp name="shipment[items][${order_item_2}]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">US</stringProp>
+              <stringProp name="Argument.name">shipment[items][${order_item_2}]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
             </elementProp>
-            <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
+            <elementProp name="shipment[items][${order_item_3}]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">12</stringProp>
+              <stringProp name="Argument.name">shipment[items][${order_item_3}]</stringProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
             </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
+            <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
               <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.name">shipment[comment_text]</stringProp>
+              <stringProp name="Argument.value"/>
               <stringProp name="Argument.metadata">=</stringProp>
               <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
             </elementProp>
           </collectionProp>
         </elementProp>
@@ -24893,19 +15268,20 @@ if (testLabel
         <stringProp name="HTTPSampler.response_timeout"/>
         <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
         <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/save/</stringProp>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
         <stringProp name="HTTPSampler.method">POST</stringProp>
         <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
         <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
         <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
         <boolProp name="HTTPSampler.monitor">false</boolProp>
         <stringProp name="HTTPSampler.embedded_url_re"/>
+        <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
       </HTTPSamplerProxy>
       <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer saved" enabled="true">
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipment Created" enabled="true">
           <collectionProp name="Asserion.test_strings">
-            <stringProp name="292987815">You saved the customer.</stringProp>
+            <stringProp name="-348539683">The shipment has been created.</stringProp>
           </collectionProp>
           <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
           <boolProp name="Assertion.assume_success">false</boolProp>
@@ -24913,22 +15289,169 @@ if (testLabel
         </ResponseAssertion>
         <hashTree/>
       </hashTree>
-      <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
-        <intProp name="ActionProcessor.action">1</intProp>
-        <intProp name="ActionProcessor.target">0</intProp>
-        <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCustomerManagementDelay}*1000))}</stringProp>
-      </TestAction>
-      <hashTree/>
     </hashTree>
   </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
   </hashTree>
 
+    
+        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="API" enabled="true">
+            <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+            <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+                <boolProp name="LoopController.continue_forever">false</boolProp>
+                <stringProp name="LoopController.loops">${loops}</stringProp>
+            </elementProp>
+            <stringProp name="ThreadGroup.num_threads">${apiPoolUsers}</stringProp>
+            <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
+            <longProp name="ThreadGroup.start_time">1505803944000</longProp>
+            <longProp name="ThreadGroup.end_time">1505803944000</longProp>
+            <boolProp name="ThreadGroup.scheduler">false</boolProp>
+            <stringProp name="ThreadGroup.duration"/>
+            <stringProp name="ThreadGroup.delay"/>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
+        <hashTree>
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${apiBasePercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "API");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+      <collectionProp name="HeaderManager.headers">
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">Content-Type</stringProp>
+          <stringProp name="Header.value">application/json</stringProp>
+        </elementProp>
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">Accept</stringProp>
+          <stringProp name="Header.value">*/*</stringProp>
+        </elementProp>
+      </collectionProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
+    <hashTree/>
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin CMS Management" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+        <stringProp name="VAR">admin_token</stringProp>
+        <stringProp name="JSONPATH">$</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_token</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+      <collectionProp name="HeaderManager.headers">
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">Authorization</stringProp>
+          <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
+        </elementProp>
+      </collectionProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
+    <hashTree/>
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Create Customer" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${adminCMSManagementPercentage}</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -24949,72 +15472,133 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Admin CMS Management");
+                vars.put("testLabel", "API Create Customer");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
         <hashTree/>
     
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create customer" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+    "customer": {&#xD;
+&#xD;
+        "email": "customer_${__time()}-${__threadNum}-${__Random(1,1000000)}@example.com",&#xD;
+        "firstname": "test_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
+        "lastname": "Doe"&#xD;
+    },&#xD;
+    "password": "test@123"&#xD;
+}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_customer.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract customer id" enabled="true">
+        <stringProp name="VAR">customer_id</stringProp>
+        <stringProp name="JSONPATH">$.id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer id not null" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="89649215">^\d+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">customer_id</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check customer" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers/${customer_id}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/check_customer.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
+        <stringProp name="JSON_PATH">$.id</stringProp>
+        <stringProp name="EXPECTED_VALUE">${customer_id}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
 
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Catalog Browsing" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
             </stringProp>
             <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "API Catalog Browsing");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
         <hashTree/>
     
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get categories" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
         <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
@@ -25023,7 +15607,7 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -25031,70 +15615,193 @@ if (testLabel
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/get_categories.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+          <stringProp name="-1294635157">errors</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">6</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable"/>
       </ResponseAssertion>
       <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract search category id" enabled="true">
+        <stringProp name="VAR">search_category_id</stringProp>
+        <stringProp name="JSONPATH">$.id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
       <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert search category id is not null" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
+          <stringProp name="89649215">^\d+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">1</intProp>
         <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
+        <stringProp name="Scope.variable">search_category_id</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get category" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories/${search_category_id}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/get_category.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1294635157">errors</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">6</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable"/>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get products" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">20</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="searchCriteria[current_page]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">searchCriteria[current_page]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/get_products.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1294635157">errors</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">6</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable"/>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Search" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "API Search");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search for simple product on frontend" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
+          <elementProp name="searchCriteria[request_name]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">quick_search_container</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
+            <stringProp name="Argument.name">searchCriteria[request_name]</stringProp>
           </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
+          <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.value">search_term</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
           </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
+          <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.value">Simple</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
+            <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
           </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
+          <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
+            <stringProp name="Argument.value">20</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
+            <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
+          </elementProp>
+          <elementProp name="searchCriteria[current_page]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">searchCriteria[current_page]</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -25104,237 +15811,52 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/search</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.default"/>
-            <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
-        <hashTree/>
-    </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin CMS Management" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_cms_management/admin_cms_management.jmx</stringProp>
-</TestFragmentController>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/search_for_product_frontend.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert results are present" enabled="true">
+        <stringProp name="JSON_PATH">$.total_count</stringProp>
+        <stringProp name="EXPECTED_VALUE">0</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">true</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
       <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/new</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract search product id" enabled="true">
+        <stringProp name="VAR">search_product_id</stringProp>
+        <stringProp name="JSONPATH">$.items[0].id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
       <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="content" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">&lt;p&gt;CMS Content ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">content</stringProp>
-            </elementProp>
-            <elementProp name="content_heading" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">content_heading</stringProp>
-            </elementProp>
-            <elementProp name="form_key" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">${admin_form_key}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">form_key</stringProp>
-            </elementProp>
-            <elementProp name="identifier" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">identifier</stringProp>
-            </elementProp>
-            <elementProp name="is_active" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">is_active</stringProp>
-            </elementProp>
-            <elementProp name="layout_update_xml" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">layout_update_xml</stringProp>
-            </elementProp>
-            <elementProp name="meta_description" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">meta_description</stringProp>
-            </elementProp>
-            <elementProp name="meta_keywords" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">meta_keywords</stringProp>
-            </elementProp>
-            <elementProp name="meta_title" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">meta_title</stringProp>
-            </elementProp>
-            <elementProp name="nodes_data" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">false</boolProp>
-              <stringProp name="Argument.value">{}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">nodes_data</stringProp>
-            </elementProp>
-            <elementProp name="node_ids" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">node_ids</stringProp>
-            </elementProp>
-            <elementProp name="page_id" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value"/>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">page_id</stringProp>
-            </elementProp>
-            <elementProp name="page_layout" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">1column</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">page_layout</stringProp>
-            </elementProp>
-            <elementProp name="store_id[0]" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">store_id[0]</stringProp>
-            </elementProp>
-            <elementProp name="title" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">CMS Title ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">title</stringProp>
-            </elementProp>
-            <elementProp name="website_root" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">true</boolProp>
-              <stringProp name="Argument.value">0</stringProp>
-              <stringProp name="Argument.metadata">=</stringProp>
-              <boolProp name="HTTPArgument.use_equals">true</boolProp>
-              <stringProp name="Argument.name">website_root</stringProp>
-            </elementProp>
-          </collectionProp>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/save/</stringProp>
-        <stringProp name="HTTPSampler.method">POST</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="-398886250">You saved the page.</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">16</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
-        <intProp name="ActionProcessor.action">1</intProp>
-        <intProp name="ActionProcessor.target">0</intProp>
-        <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCMSManagementDelay}*1000))}</stringProp>
-      </TestAction>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert search product id is not null" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="89649215">^\d+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">search_product_id</stringProp>
+      </ResponseAssertion>
       <hashTree/>
     </hashTree>
   </hashTree>
-  </hashTree>
 
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Product Review By Customer" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Checkout" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${reviewByCustomerPercentage}</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -25355,37 +15877,12 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Product Review By Customer");
+                vars.put("testLabel", "API Checkout");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
         <hashTree/>
     
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies">
-        <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
-          <stringProp name="Cookie.value">30</stringProp>
-          <stringProp name="Cookie.domain">${host}</stringProp>
-          <stringProp name="Cookie.path">/</stringProp>
-          <boolProp name="Cookie.secure">false</boolProp>
-          <longProp name="Cookie.expires">0</longProp>
-          <boolProp name="Cookie.path_specified">true</boolProp>
-          <boolProp name="Cookie.domain_specified">true</boolProp>
-        </elementProp>
-        <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
-          <stringProp name="Cookie.value">${form_key}</stringProp>
-          <stringProp name="Cookie.domain">${host}</stringProp>
-          <stringProp name="Cookie.path">${base_path}</stringProp>
-          <boolProp name="Cookie.secure">false</boolProp>
-          <longProp name="Cookie.expires">0</longProp>
-          <boolProp name="Cookie.path_specified">true</boolProp>
-          <boolProp name="Cookie.domain_specified">true</boolProp>
-        </elementProp>
-      </collectionProp>
-      <boolProp name="CookieManager.clearEachIteration">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
       <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
         <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
         <stringProp name="BeanShellSampler.query">
@@ -25404,46 +15901,27 @@ vars.putObject("randomIntGenerator", random);
       </BeanShellSampler>
       <hashTree/>
     
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_customer_email.jmx</stringProp>
-      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
-
-String siterator = vars.get("customer_emails_index");
-int iterator;
-if(siterator == null){
-    iterator = 0;
-    vars.put("customer_emails_index", "0");
-} else {
-    iterator = Integer.parseInt(siterator);
-    iterator ++;
-    vars.put("customer_emails_index", iterator.toString());
-}
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
+      <stringProp name="BeanShellSampler.query">
+import java.util.Random;
 
-emails_list = props.get("customer_emails_list");
+Random random = vars.getObject("randomIntGenerator");
+number = random.nextInt(props.get("simple_products_list").size());
+product = props.get("simple_products_list").get(number);
 
-threadsNumber = ctx.getThreadGroup().getNumThreads();
-emailsCount = emails_list.size();
-if (threadsNumber &gt; emailsCount) {
-    log.error(" There are not enough customers for this scenario.");
-} else {
-    clusterLength = Math.round(emailsCount / threadsNumber);
-    threadNum = ctx.getThreadNum();
-    emails_index = clusterLength * threadNum + iterator;
-    maxLimit = clusterLength * (threadNum + 1);
-    if (emails_index &gt;= maxLimit) {
-        iterator = 0;
-        emails_index = clusterLength * threadNum + iterator;
-        vars.put("customer_emails_index", iterator.toString());
-    }
-}
-vars.put("customer_email", emails_list.get(emails_index));</stringProp>
+vars.put("product_url_key", product.get("url_key"));
+vars.put("product_id", product.get("id"));
+vars.put("product_name", product.get("title"));
+vars.put("product_uenc", product.get("uenc"));
+vars.put("product_sku", product.get("sku"));
+      </stringProp>
       <stringProp name="BeanShellSampler.filename"/>
       <stringProp name="BeanShellSampler.parameters"/>
       <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    </BeanShellSampler>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
     <hashTree/>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create quote" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
       </elementProp>
@@ -25453,57 +15931,122 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_quote.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract cart id" enabled="true">
+        <stringProp name="VAR">quote_id</stringProp>
+        <stringProp name="JSONPATH">$</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
       <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
+          <stringProp name="89649215">^\d+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">quote_id</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add product to quote" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${customer_email}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${customer_password}</stringProp>
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+	"cartItem": {&#xD;
+		"sku": "${product_sku}",&#xD;
+		"qty":"1",&#xD;
+		"quote_id":"${quote_id}"&#xD;
+	}&#xD;
+}&#xD;
+</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
           </elementProp>
-          <elementProp name="send" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/${quote_id}/items</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/add_product_to_quote_hardwired_sku.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
+        <stringProp name="JSON_PATH">$.sku</stringProp>
+        <stringProp name="EXPECTED_VALUE">${product_sku}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check products in quote" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/${quote_id}/items</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/check_product_in_quote_hardwired_sku.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
+        <stringProp name="JSON_PATH">$[0].sku</stringProp>
+        <stringProp name="EXPECTED_VALUE">${product_sku}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Guest Cart" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+    "storeId": 1&#xD;
+}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">send</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -25513,7 +16056,7 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -25521,27 +16064,17 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_guest_cart.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">addressId</stringProp>
-        <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+        <stringProp name="VAR">cart_id</stringProp>
+        <stringProp name="JSONPATH">$</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
       <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Guest Cart Id extracted" enabled="true">
         <collectionProp name="Asserion.test_strings">
           <stringProp name="2845929">^.+$</stringProp>
         </collectionProp>
@@ -25549,33 +16082,26 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">1</intProp>
         <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">addressId</stringProp>
+        <stringProp name="Scope.variable">cart_id</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add product to Guest Cart" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="sections" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sections</stringProp>
-          </elementProp>
-          <elementProp name="update_section_id" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">false</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">update_section_id</stringProp>
-          </elementProp>
-          <elementProp name="_" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+	"cartItem": {&#xD;
+		"sku": "${product_sku}",&#xD;
+		"qty":"1",&#xD;
+		"quote_id":"${cart_id}"&#xD;
+	}&#xD;
+}&#xD;
+</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -25585,128 +16111,39 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/items</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    </HTTPSamplerProxy>
-    <hashTree/>
-  
-    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Review Simple Products" enabled="true">
-      <boolProp name="LoopController.continue_forever">true</boolProp>
-      <stringProp name="LoopController.loops">1</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/add_product_to_guest_cart_hardwired_sku.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
-        <stringProp name="CounterConfig.start">1</stringProp>
-        <stringProp name="CounterConfig.end"/>
-        <stringProp name="CounterConfig.incr">1</stringProp>
-        <stringProp name="CounterConfig.name">_counter</stringProp>
-        <stringProp name="CounterConfig.format"/>
-        <boolProp name="CounterConfig.per_user">true</boolProp>
-        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
-      </CounterConfig>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
+        <stringProp name="JSON_PATH">$.quote_id</stringProp>
+        <stringProp name="EXPECTED_VALUE">^[a-z0-9-]+$</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
       <hashTree/>
-    
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
-      <stringProp name="BeanShellSampler.query">
-import java.util.Random;
-
-Random random = vars.getObject("randomIntGenerator");
-number = random.nextInt(props.get("simple_products_list").size());
-product = props.get("simple_products_list").get(number);
-
-vars.put("product_url_key", product.get("url_key"));
-vars.put("product_id", product.get("id"));
-vars.put("product_name", product.get("title"));
-vars.put("product_uenc", product.get("uenc"));
-vars.put("product_sku", product.get("sku"));
-      </stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
-    <hashTree/>
+    </hashTree>
   
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                <collectionProp name="Arguments.arguments"/>
-            </elementProp>
-            <stringProp name="HTTPSampler.domain"/>
-            <stringProp name="HTTPSampler.port"/>
-            <stringProp name="HTTPSampler.connect_timeout"/>
-            <stringProp name="HTTPSampler.response_timeout"/>
-            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-            <stringProp name="HTTPSampler.contentEncoding"/>
-            <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-            <boolProp name="HTTPSampler.monitor">false</boolProp>
-            <stringProp name="HTTPSampler.embedded_url_re"/>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
-        <hashTree>
-            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                <collectionProp name="Asserion.test_strings">
-                    <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
-                </collectionProp>
-                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                <boolProp name="Assertion.assume_success">false</boolProp>
-                <intProp name="Assertion.test_type">2</intProp>
-            </ResponseAssertion>
-            <hashTree/>
-        </hashTree>
-    
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 1 Rate and Review" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Gift Message to Guest Cart" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="ratings[1]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">3</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">ratings[1]</stringProp>
-          </elementProp>
-          <elementProp name="validate_rating" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">validate_rating</stringProp>
-          </elementProp>
-          <elementProp name="nickname" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">FirstName</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">nickname</stringProp>
-          </elementProp>
-          <elementProp name="title" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">Some Review Title</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">title</stringProp>
-          </elementProp>
-          <elementProp name="detail" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">Some Review Text</stringProp>
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+	"sender": "John Doe",&#xD;
+	"recipient": "Jane Roe",&#xD;
+	"giftMessage": "Gift Message Text"&#xD;
+}&#xD;
+</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">detail</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -25716,7 +16153,7 @@ vars.put("product_sku", product.get("sku"));
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}review/product/post/id/${product_id}</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/gift-message</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -25724,42 +16161,26 @@ vars.put("product_sku", product.get("sku"));
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_review/product_review.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/add_gift_message_to_guest_cart.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1606201635">HTTP/1.1 200 OK</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_headers</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">16</intProp>
-      </ResponseAssertion>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
+        <stringProp name="JSON_PATH">$</stringProp>
+        <stringProp name="EXPECTED_VALUE">true</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Review Section" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="sections" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">review,messages</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sections</stringProp>
-          </elementProp>
-          <elementProp name="update_section_id" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">false</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">update_section_id</stringProp>
-          </elementProp>
-          <elementProp name="_" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{"address":{"country_id":"US","postcode":"95630"}}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -25769,28 +16190,58 @@ vars.put("product_sku", product.get("sku"));
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_review/load_review.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree/>
-  
-    <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Product Rating and Review - Pause" enabled="true">
-      <intProp name="ActionProcessor.action">1</intProp>
-      <intProp name="ActionProcessor.target">0</intProp>
-      <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${reviewDelay}*1000))}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_review/product_review_pause.jmx</stringProp></TestAction>
-    <hashTree/>
-  </hashTree>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/guest_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+        <collectionProp name="HeaderManager.headers">
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Referer</stringProp>
+            <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
+          </elementProp>
+          <elementProp name="Content-Type" elementType="Header">
+            <stringProp name="Header.name">Content-Type</stringProp>
+            <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
+          </elementProp>
+          <elementProp name="X-Requested-With" elementType="Header">
+            <stringProp name="Header.name">X-Requested-With</stringProp>
+            <stringProp name="Header.value">XMLHttpRequest</stringProp>
+          </elementProp>
+          <elementProp name="Accept" elementType="Header">
+            <stringProp name="Header.name">Accept</stringProp>
+            <stringProp name="Header.value">application/json</stringProp>
+          </elementProp>
+        </collectionProp>
+      </HeaderManager>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1224567411">"available":true</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{"addressInformation":{"shipping_address":{"countryId":"US","regionId":"12","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"},"shipping_method_code":"flatrate","shipping_carrier_code":"flatrate"}}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -25798,81 +16249,55 @@ vars.put("product_sku", product.get("sku"));
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/guest_checkout/checkout_billing_shipping_information.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
+      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+        <collectionProp name="HeaderManager.headers">
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Referer</stringProp>
+            <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
+          </elementProp>
+          <elementProp name="Content-Type" elementType="Header">
+            <stringProp name="Header.name">Content-Type</stringProp>
+            <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
+          </elementProp>
+          <elementProp name="X-Requested-With" elementType="Header">
+            <stringProp name="Header.name">X-Requested-With</stringProp>
+            <stringProp name="Header.value">XMLHttpRequest</stringProp>
+          </elementProp>
+          <elementProp name="Accept" elementType="Header">
+            <stringProp name="Header.name">Accept</stringProp>
+            <stringProp name="Header.value">application/json</stringProp>
+          </elementProp>
+        </collectionProp>
+      </HeaderManager>
+      <hashTree/>
       <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="1723813687">You are signed out.</stringProp>
+          <stringProp name="-1494218646">{"payment_methods":</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${apiBasePercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "API");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-      <collectionProp name="HeaderManager.headers">
-        <elementProp name="" elementType="Header">
-          <stringProp name="Header.name">Content-Type</stringProp>
-          <stringProp name="Header.value">application/json</stringProp>
-        </elementProp>
-        <elementProp name="" elementType="Header">
-          <stringProp name="Header.name">Accept</stringProp>
-          <stringProp name="Header.value">*/*</stringProp>
-        </elementProp>
-      </collectionProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
-    <hashTree/>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order" enabled="true">
       <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
         <collectionProp name="Arguments.arguments">
           <elementProp name="" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
+            <stringProp name="Argument.value">{"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"12","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname","save_in_address_book":0}}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
         </collectionProp>
@@ -25883,7 +16308,7 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -25891,44 +16316,85 @@ if (testLabel
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/checkout_payment_info_place_order.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
-        <stringProp name="VAR">admin_token</stringProp>
+      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+        <collectionProp name="HeaderManager.headers">
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Referer</stringProp>
+            <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
+          </elementProp>
+          <elementProp name="Content-Type" elementType="Header">
+            <stringProp name="Header.name">Content-Type</stringProp>
+            <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
+          </elementProp>
+          <elementProp name="X-Requested-With" elementType="Header">
+            <stringProp name="Header.name">X-Requested-With</stringProp>
+            <stringProp name="Header.value">XMLHttpRequest</stringProp>
+          </elementProp>
+          <elementProp name="Accept" elementType="Header">
+            <stringProp name="Header.name">Accept</stringProp>
+            <stringProp name="Header.value">application/json</stringProp>
+          </elementProp>
+        </collectionProp>
+      </HeaderManager>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-297987887">"[0-9]+"</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract cart id" enabled="true">
+        <stringProp name="VAR">order_id</stringProp>
         <stringProp name="JSONPATH">$</stringProp>
         <stringProp name="DEFAULT"/>
         <stringProp name="VARIABLE"/>
         <stringProp name="SUBJECT">BODY</stringProp>
       </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
       <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
+          <stringProp name="89649215">^\d+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">1</intProp>
         <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_token</stringProp>
+        <stringProp name="Scope.variable">order_id</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
-  
-    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-      <collectionProp name="HeaderManager.headers">
-        <elementProp name="" elementType="Header">
-          <stringProp name="Header.name">Authorization</stringProp>
-          <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
-        </elementProp>
-      </collectionProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
-    <hashTree/>
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Create Customer" enabled="true">
+  </hashTree>
+
+  </hashTree>
+
+  </hashTree>
+
+    
+        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="One Thread Scenarios (Vulnerable to deadlocks)" enabled="true">
+            <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+            <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+                <boolProp name="LoopController.continue_forever">false</boolProp>
+                <stringProp name="LoopController.loops">${loops}</stringProp>
+            </elementProp>
+            <stringProp name="ThreadGroup.num_threads">${deadLocksPoolUsers}</stringProp>
+            <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
+            <longProp name="ThreadGroup.start_time">1505803944000</longProp>
+            <longProp name="ThreadGroup.end_time">1505803944000</longProp>
+            <boolProp name="ThreadGroup.scheduler">false</boolProp>
+            <stringProp name="ThreadGroup.duration"/>
+            <stringProp name="ThreadGroup.delay"/>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
+        <hashTree>
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Product Grid Mass Actions" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${productGridMassActionPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -25949,30 +16415,99 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "API Create Customer");
+                vars.put("testLabel", "Product Grid Mass Actions");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
         <hashTree/>
     
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create customer" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-    "customer": {&#xD;
-&#xD;
-        "email": "customer_${__time()}-${__threadNum}-${__Random(1,1000000)}@example.com",&#xD;
-        "firstname": "test_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
-        "lastname": "Doe"&#xD;
-    },&#xD;
-    "password": "test@123"&#xD;
-}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-          </elementProp>
-        </collectionProp>
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
+        <hashTree/>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
+        <hashTree/>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -25980,40 +16515,80 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_customer.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract customer id" enabled="true">
-        <stringProp name="VAR">customer_id</stringProp>
-        <stringProp name="JSONPATH">$.id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
       <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer id not null" enabled="true">
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
+          <stringProp name="2845929">^.+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">1</intProp>
         <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">customer_id</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check customer" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="dummy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+        </collectionProp>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -26021,7 +16596,117 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers/${customer_id}</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Product Pages Count" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">product_listing</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">20</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -26029,118 +16714,151 @@ if (testLabel
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/check_customer.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/get_product_pages_count.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
-        <stringProp name="JSON_PATH">$.id</stringProp>
-        <stringProp name="EXPECTED_VALUE">${customer_id}</stringProp>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
+        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
+        <stringProp name="EXPECTED_VALUE">0</stringProp>
         <boolProp name="JSONVALIDATION">true</boolProp>
         <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
+        <boolProp name="INVERT">true</boolProp>
       </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
       <hashTree/>
-    </hashTree>
-  </hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
+        <stringProp name="VAR">products_number</stringProp>
+        <stringProp name="JSONPATH">$.totalRecords</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Calculate pages count" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">var productsPageSize = Integer.parseInt(vars.get("products_page_size"));
+var productsTotal = Integer.parseInt(vars.get("products_number"));
+var pageCountProducts = Math.round(productsTotal/productsPageSize);
 
+vars.put("pages_count_product", String.valueOf(pageCountProducts));</stringProp>
+      </BeanShellPostProcessor>
+      <hashTree/>
+    </hashTree>
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Product Attribute Management" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
+      <stringProp name="BeanShellSampler.query">
+import java.util.Random;
+Random random = new Random();
+if (${seedForRandom} &gt; 0) {
+random.setSeed(${seedForRandom});
 }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "API Product Attribute Management");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create attribute set" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+var productsPageSize = Integer.parseInt(vars.get("products_page_size"));
+var totalNumberOfPages = Integer.parseInt(vars.get("pages_count_product"));
+
+// Randomly select a page.
+var randomProductsPage = random.nextInt(totalNumberOfPages) + 1;
+
+// Get the first and last product id on that page.
+var lastProductIdOnPage = randomProductsPage * productsPageSize;
+var firstProductIdOnPage = lastProductIdOnPage - productsPageSize + 1;
+
+var randomProductId1 = Math.floor(random.nextInt(productsPageSize)) + firstProductIdOnPage;
+var randomProductId2 = Math.floor(random.nextInt(productsPageSize)) + firstProductIdOnPage;
+var randomProductId3 = Math.floor(random.nextInt(productsPageSize)) + firstProductIdOnPage;
+
+vars.put("page_number", String.valueOf(randomProductsPage));
+vars.put("productId1", String.valueOf(randomProductId1));
+vars.put("productId2", String.valueOf(randomProductId2));
+vars.put("productId3", String.valueOf(randomProductId3));
+
+var randomQuantity = random.nextInt(1000) + 1;
+var randomPrice = random.nextInt(500) + 10;
+var randomVisibility = random.nextInt(4) + 1;
+
+vars.put("quantity", String.valueOf(randomQuantity));
+vars.put("price", String.valueOf(randomPrice));
+vars.put("visibility", String.valueOf(randomVisibility));
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/products_grid_mass_actions/setup.jmx</stringProp></BeanShellSampler>
+    <hashTree/>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select Products and Update Attributes mass action" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-    "attributeSet": {&#xD;
-        "attribute_set_name": "new_attribute_set_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
-        "sort_order": 500&#xD;
-    },&#xD;
-    "skeletonId": "4"&#xD;
-}</stringProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">product_listing</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="search" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${products_page_size}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="paging[current]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${page_number}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attribute-sets/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_attribute_set.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract attribute_set_id" enabled="true">
-        <stringProp name="VAR">attribute_set_id</stringProp>
-        <stringProp name="JSONPATH">$.attribute_set_id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_set_id not null" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">attribute_set_id</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create attribute group" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-    "group": {&#xD;
-        "attribute_group_name": "empty_attribute_group_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
-        "attribute_set_id": ${attribute_set_id}&#xD;
-    }&#xD;
-}</stringProp>
+          <elementProp name="sorting[field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -26150,58 +16868,75 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attribute-sets/groups</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_attribute_group.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/products_grid_mass_actions/display_grid.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract attribute_group_id" enabled="true">
-        <stringProp name="VAR">attribute_group_id</stringProp>
-        <stringProp name="JSONPATH">$.attribute_group_id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_group_id not null" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
+          <stringProp name="1637639774">totalRecords</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">attribute_set_id</stringProp>
+        <intProp name="Assertion.test_type">2</intProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create attribute" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Display Update Attributes" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-    "attribute": {&#xD;
-        "attribute_code": "attr_code_${__time()}",&#xD;
-        "frontend_labels": [&#xD;
-            {&#xD;
-                "store_id": 0,&#xD;
-                "label": "front_lbl_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}"&#xD;
-            }&#xD;
-        ],&#xD;
-        "default_value": "default value",&#xD;
-        "frontend_input": "textarea",&#xD;
-        "is_required": true&#xD;
-    }&#xD;
-}</stringProp>
+          <elementProp name="selected[0]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${productId1}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">selected[0]</stringProp>
+          </elementProp>
+          <elementProp name="selected[1]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${productId2}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">selected[1]</stringProp>
+          </elementProp>
+          <elementProp name="selected[2]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${productId3}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">selected[2]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="namespace" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">product_listing</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -26211,71 +16946,240 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attributes/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_action_attribute/edit</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_attribute.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/products_grid_mass_actions/display_update_attributes.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract attribute_id" enabled="true">
-        <stringProp name="VAR">attribute_id</stringProp>
-        <stringProp name="JSONPATH">$.attribute_id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract attribute_code" enabled="true">
-        <stringProp name="VAR">attribute_code</stringProp>
-        <stringProp name="JSONPATH">$.attribute_code</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_id not null" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">attribute_id</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_code not null" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="2131456825">^[a-z0-9-_]+$</stringProp>
+          <stringProp name="1862384910">Update Attributes</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">attribute_code</stringProp>
+        <intProp name="Assertion.test_type">2</intProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add attribute to attribute set" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-    "attributeSetId": "${attribute_set_id}",&#xD;
-    "attributeGroupId": "${attribute_group_id}",&#xD;
-    "attributeCode": "${attribute_code}",&#xD;
-    "sortOrder": 3&#xD;
-}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-          </elementProp>
-        </collectionProp>
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Validate Attributes" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments">
+        <elementProp name="isAjax" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">true</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">isAjax</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="form_key" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${admin_form_key}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">form_key</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="inventory[qty]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${quantity}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">inventory[qty]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="attributes[price]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${price}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">attributes[price]</stringProp>
+        </elementProp>
+        <elementProp name="attributes[visibility]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${visibility}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">attributes[visibility]</stringProp>
+        </elementProp>
+      </collectionProp>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_action_attribute/validate</stringProp>
+    <stringProp name="HTTPSampler.method">POST</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/products_grid_mass_actions/change_attributes.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="1853918323">{"error":false}</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+  </hashTree>
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Attributes" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments">
+        <elementProp name="isAjax" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">true</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">isAjax</stringProp>
+          <stringProp name="Argument.desc">false</stringProp>
+        </elementProp>
+        <elementProp name="form_key" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${admin_form_key}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">form_key</stringProp>
+          <stringProp name="Argument.desc">false</stringProp>
+        </elementProp>
+        <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
+        </elementProp>
+        <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="inventory[qty]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${quantity}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">inventory[qty]</stringProp>
+        </elementProp>
+        <elementProp name="toggle_qty" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">on</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">toggle_price</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="attributes[price]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${price}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">attributes[price]</stringProp>
+        </elementProp>
+        <elementProp name="toggle_price" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">on</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">toggle_price</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="attributes[visibility]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${visibility}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">attributes[visibility]</stringProp>
+        </elementProp>
+        <elementProp name="toggle_visibility" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">on</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">toggle_visibility</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+      </collectionProp>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_action_attribute/save/store/0/active_tab/attributes</stringProp>
+    <stringProp name="HTTPSampler.method">POST</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  </HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="1848809106">were updated.</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+  </hashTree>
+</hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -26283,33 +17187,36 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attribute-sets/attributes</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/add_attribute_to_attribute_set.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert response is not null" enabled="true">
-        <stringProp name="JSON_PATH">$</stringProp>
-        <stringProp name="EXPECTED_VALUE">(\d+)</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-    </hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
   </hashTree>
 
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Product Management" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Import Products" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${importProductsPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -26326,32 +17233,103 @@ if (testLabel
 }
             </stringProp>
             <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "API Product Management");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Import Products");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
+        <hashTree/>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
         <hashTree/>
     
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create product" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-    "product": {&#xD;
-        "sku": "psku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
-        "name": "Product_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
-        "attributeSetId": 4&#xD;
-    }&#xD;
-}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-          </elementProp>
-        </collectionProp>
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -26359,89 +17337,78 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_product_no_custom_attributes.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract product id" enabled="true">
-        <stringProp name="VAR">simple_product_id</stringProp>
-        <stringProp name="JSONPATH">$.id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract product sku" enabled="true">
-        <stringProp name="VAR">simple_product_sku</stringProp>
-        <stringProp name="JSONPATH">$.sku</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract stock item id" enabled="true">
-        <stringProp name="VAR">simple_stock_item_id</stringProp>
-        <stringProp name="JSONPATH">$.extension_attributes.stock_item.item_id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product id not null" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">simple_product_id</stringProp>
+        <intProp name="Assertion.test_type">2</intProp>
       </ResponseAssertion>
       <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product sku not null" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">simple_product_sku</stringProp>
-      </ResponseAssertion>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
       <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert stock item id not null" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
+          <stringProp name="2845929">^.+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">1</intProp>
         <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">simple_stock_item_id</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update product stock info" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-        "stock_item": {   &#xD;
-        	"manage_stock": true,    &#xD;
-        	"is_in_stock": true,&#xD;
-          "qty": ${simple_product_id}&#xD;
-        }&#xD;
-    }</stringProp>
+          <elementProp name="dummy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -26451,36 +17418,49 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/${simple_product_sku}/stockItems/${simple_stock_item_id}</stringProp>
-      <stringProp name="HTTPSampler.method">PUT</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/update_product_stock_info.jmx</stringProp></HTTPSamplerProxy>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
-        <stringProp name="JSON_PATH">$</stringProp>
-        <stringProp name="EXPECTED_VALUE">${simple_stock_item_id}</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
     </hashTree>
+  </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check product" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-          </elementProp>
-        </collectionProp>
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
+      <stringProp name="BeanShellSampler.query">vars.put("entity", "catalog_product");
+String behavior = "${adminImportProductBehavior}";
+vars.put("adminImportBehavior", behavior);
+String filepath = "${files_folder}${adminImportProductFilePath}";
+vars.put("adminImportFilePath", filepath);  </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/import_products/setup.jmx</stringProp></BeanShellSampler>
+    <hashTree/>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Page" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -26488,7 +17468,7 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/${simple_product_sku}</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -26496,92 +17476,71 @@ if (testLabel
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/check_product.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product sku" enabled="true">
-        <stringProp name="JSON_PATH">$.sku</stringProp>
-        <stringProp name="EXPECTED_VALUE">${simple_product_sku}</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product id" enabled="true">
-        <stringProp name="JSON_PATH">$.id</stringProp>
-        <stringProp name="EXPECTED_VALUE">${simple_product_id}</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert stock item id" enabled="true">
-        <stringProp name="JSON_PATH">$.extension_attributes.stock_item.item_id</stringProp>
-        <stringProp name="EXPECTED_VALUE">${simple_stock_item_id}</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert updated quantity" enabled="true">
-        <stringProp name="JSON_PATH">$.extension_attributes.stock_item.qty</stringProp>
-        <stringProp name="EXPECTED_VALUE">${simple_product_id}</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1723813687">Import Settings</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create product with extensible data objects" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Validate" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-    "product": {&#xD;
-        "sku": "apsku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
-        "name": "Extensible_Product_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
-        "visibility": "4",&#xD;
-        "type_id": "simple",&#xD;
-        "price": "3.62",&#xD;
-        "status": "1",&#xD;
-        "attribute_set_id": "4",&#xD;
-        "custom_attributes": [&#xD;
-            {&#xD;
-                "attribute_code": "cost",&#xD;
-                "value": ""&#xD;
-            },&#xD;
-            {&#xD;
-                "attribute_code": "description",&#xD;
-                "value": "Description"&#xD;
-            }&#xD;
-        ],&#xD;
-        "extension_attributes":{&#xD;
-		"stock_item":{&#xD;
-		"manage_stock": true,    &#xD;
-		"is_in_stock": true,&#xD;
-		"qty":"100"&#xD;
-		}&#xD;
-    	   }        ,&#xD;
-    	   "media_gallery_entries":&#xD;
-    	   	[{&#xD;
-    	   		"id": null,&#xD;
-    	   		"label":"test_label_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
-    	   		"position":1,&#xD;
-    	   		"disabled":false,&#xD;
-    	   		"media_type":"image",&#xD;
-    	   		"types":["image"],&#xD;
-    	   		"content":{&#xD;
-    	   			"base64_encoded_data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABgAGADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iioLy8t9Ps5bu7lWKCIZd26KKaTbshpX0RPRXN/8J/4V/6DVv8Ak3+FH/Cf+Ff+g1b/AJN/hXR9SxP/AD7l9zNPYVf5X9x0lFc3/wAJ/wCFf+g1b/k3+FH/AAn/AIV/6DVv+Tf4UfUsT/z7l9zD2FX+V/cdJRXN/wDCf+Ff+g1b/k3+FH/Cf+Ff+g1b/k3+FH1LE/8APuX3MPYVf5X9x0lFc3/wn/hX/oNW/wCTf4Uf8J/4V/6DVv8Ak3+FH1LE/wDPuX3MPYVf5X9x0lFVdP1G01WyS8sZ1nt3JCyL0ODg/qKtVzyi4u0lZmbTTswrm/H3/Iiav/1x/wDZhXSVzfj7/kRNX/64/wDswrowf+80/wDEvzNKH8WPqj5voorB1zS7OLT7m7SHE5YNu3HqWGeM471+kYutOhSdSEU7Jt3dtF20f6H1FacqcHJK9vO36M3qKzTa6foqPdxwlWxswrFi2T0AJ9aRdVmjkT7XYSW8TsFEm8MAT0yB0qfrcafu1tJeV2l2u7K3zsL2yjpPR+V3+NjTorPn1GVbt7a1s2uJIwDJ84ULnpyaik1SWTTrp47Z0uIQRJGzAFOPvZ70Sx1GLau9L9H03SdrNrsgdeCuu3k+hq0VR0ma4msImuIih2LtYvuLjA+b2zV6uijUVWmprqaQkpxUl1PoP4Xf8iBYf78v/oxq7GuO+F3/ACIFh/vy/wDoxq7GvzTMf98q/wCJ/mfLYn+NP1YVzfj7/kRNX/64/wDswrpK5vx9/wAiJq//AFx/9mFRg/8Aeaf+JfmTQ/ix9UfN9ZniD/kB3H/Af/QhWnTZI45kKSIroeqsMg1+l4mk61GdNfaTX3o+pqw54Sj3Rma/GXsI3BcLFMruU+8F5yR+dUZ4tOeNFOq3tx5jACNZg5J+mK6PrUMdrbxPvjgiR/7yoAa48TgPa1HNW1STvfp2s1+JjVw/PJy017mbe/YTqTB7iWzuQgPmhtocfjwajiupbjTtTieUXCxRsqTKMb8qePwrYlghnAE0UcgHQOoP86ckaRoERFVR/CowKbwU3UclJJO+19brqr203vvoHsJczd7J3/H8PmVNJnhm063WOVHZIkDhTkqcd/yNXajighg3eTFHHu67FAz+VSV2UIShTjGe67G9NOMUpbn0H8Lv+RAsP9+X/wBGNXY1x3wu/wCRAsP9+X/0Y1djX5tmP++Vf8T/ADPl8T/Gn6sK5vx9/wAiJq//AFx/9mFdJXN+Pv8AkRNX/wCuP/swqMH/ALzT/wAS/Mmh/Fj6o+b6KKK/Uj60KKKKACiiigAooooA+g/hd/yIFh/vy/8Aoxq7GuO+F3/IgWH+/L/6Mauxr8wzH/fKv+J/mfKYn+NP1YVzfj7/AJETV/8Arj/7MK6Sub8ff8iJq/8A1x/9mFRg/wDeaf8AiX5k0P4sfVHzfRRRX6kfWhRRRQAUUUUAFFFFAH0H8Lv+RAsP9+X/ANGNXY1x3wu/5ECw/wB+X/0Y1djX5hmP++Vf8T/M+UxP8afqwqC8s7fULOW0u4llglGHRujCp6K5E2ndGKdtUc3/AMIB4V/6Atv+bf40f8IB4V/6Atv+bf410lFdH13E/wDPyX3s09vV/mf3nN/8IB4V/wCgLb/m3+NH/CAeFf8AoC2/5t/jXSUUfXcT/wA/Jfew9vV/mf3nN/8ACAeFf+gLb/m3+NH/AAgHhX/oC2/5t/jXSUUfXcT/AM/Jfew9vV/mf3nN/wDCAeFf+gLb/m3+NH/CAeFf+gLb/m3+NdJRR9dxP/PyX3sPb1f5n95V0/TrTSrJLOxgWC3QkrGvQZOT+pq1RRXPKTk7yd2Zttu7P//Z",&#xD;
-        "type": "image/jpeg",&#xD;
-        "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg"&#xD;
-    	   			}&#xD;
-    	   	}&#xD;
-    	   	]&#xD;
-    }&#xD;
-}</stringProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="entity" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${entity}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">entity</stringProp>
+          </elementProp>
+          <elementProp name="behavior" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">behavior</stringProp>
+          </elementProp>
+          <elementProp name="validation_strategy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">validation_strategy</stringProp>
+          </elementProp>
+          <elementProp name="allowed_error_count" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">10</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">allowed_error_count</stringProp>
+          </elementProp>
+          <elementProp name="_import_field_separator" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_import_field_separator</stringProp>
+          </elementProp>
+          <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -26591,93 +17550,145 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/validate</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
+      <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
+        <collectionProp name="HTTPFileArgs.files">
+          <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
+            <stringProp name="File.path">${adminImportFilePath}</stringProp>
+            <stringProp name="File.paramname">import_file</stringProp>
+            <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_product_with_extensible_data_objects.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import_validate.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract product id" enabled="true">
-        <stringProp name="VAR">simple_product_id</stringProp>
-        <stringProp name="JSONPATH">$.id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract product sku" enabled="true">
-        <stringProp name="VAR">simple_product_sku</stringProp>
-        <stringProp name="JSONPATH">$.sku</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract stock item id" enabled="true">
-        <stringProp name="VAR">simple_stock_item_id</stringProp>
-        <stringProp name="JSONPATH">$.extension_attributes.stock_item.item_id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product id not null" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">simple_product_id</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product sku not null" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">simple_product_sku</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert stock item id not null" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
+          <stringProp name="37280142">File is valid! To start import process</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">simple_stock_item_id</stringProp>
+        <intProp name="Assertion.test_type">16</intProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check product with extensible data objects" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Start" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
+          <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="entity" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${entity}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">entity</stringProp>
+          </elementProp>
+          <elementProp name="behavior" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">behavior</stringProp>
+          </elementProp>
+          <elementProp name="validation_strategy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">validation_strategy</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="allowed_error_count" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">10</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">allowed_error_count</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="_import_field_separator" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_import_field_separator</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/start</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
+      <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
+        <collectionProp name="HTTPFileArgs.files">
+          <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
+            <stringProp name="File.path">${adminImportFilePath}</stringProp>
+            <stringProp name="File.paramname">import_file</stringProp>
+            <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import_save.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1731221824">Import successfully done</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">16</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
       <stringProp name="HTTPSampler.connect_timeout"/>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/${simple_product_sku}</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -26685,49 +17696,28 @@ if (testLabel
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/check_product_with_extensible_data_objects.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product sku" enabled="true">
-        <stringProp name="JSON_PATH">$.sku</stringProp>
-        <stringProp name="EXPECTED_VALUE">${simple_product_sku}</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product id" enabled="true">
-        <stringProp name="JSON_PATH">$.id</stringProp>
-        <stringProp name="EXPECTED_VALUE">${simple_product_id}</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert stock item id" enabled="true">
-        <stringProp name="JSON_PATH">$.extension_attributes.stock_item.item_id</stringProp>
-        <stringProp name="EXPECTED_VALUE">${simple_stock_item_id}</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert updated quantity" enabled="true">
-        <stringProp name="JSON_PATH">$.extension_attributes.stock_item.qty</stringProp>
-        <stringProp name="EXPECTED_VALUE">100</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-    </hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
   </hashTree>
 
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Process Orders" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Import Customers" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${importCustomersPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -26748,64 +17738,178 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "API Process Orders");
+                vars.put("testLabel", "Import Customers");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
         <hashTree/>
     
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
-      <stringProp name="BeanShellSampler.query">// Each thread gets an equal number of orders, based on how many orders are available.
-
-      int apiProcessOrders = Integer.parseInt("${apiProcessOrders}");
-      if (apiProcessOrders &gt; 0) {
-      ordersPerThread = apiProcessOrders;
-      } else {
-      ordersPerThread = 1;
-      }
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
 
+        formKey = vars.get("form_key_storage");
 
-      threadNum = ${__threadNum};
-      vars.put("ordersPerThread", String.valueOf(ordersPerThread));
-      vars.put("threadNum", String.valueOf(threadNum));
+	   currentFormKey = getFormKeyFromResponse();
 
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
+        <hashTree/>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
+        <hashTree/>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
       </stringProp>
       <stringProp name="BeanShellSampler.filename"/>
       <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/process_orders/setup.jmx</stringProp></BeanShellSampler>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
     <hashTree/>
+  </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Orders" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
+          <elementProp name="dummy" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">status</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
+            <stringProp name="Argument.name">dummy</stringProp>
           </elementProp>
-          <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
+          <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">Pending</stringProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
+            <stringProp name="Argument.name">form_key</stringProp>
           </elementProp>
-          <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
+          <elementProp name="login[password]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${ordersPerThread}</stringProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
           </elementProp>
-          <elementProp name="searchCriteria[current_page]" elementType="HTTPArgument">
+          <elementProp name="login[username]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${threadNum}</stringProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[current_page]</stringProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -26815,33 +17919,47 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/orders</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/process_orders/get_orders.jmx</stringProp></HTTPSamplerProxy>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract entity ids" enabled="true">
-        <stringProp name="VAR">entity_ids</stringProp>
-        <stringProp name="JSONPATH">$.items[*].entity_id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
     </hashTree>
+  </hashTree>
   
-    <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Order" enabled="true">
-      <stringProp name="ForeachController.inputVal">entity_ids</stringProp>
-      <stringProp name="ForeachController.returnVal">order_id</stringProp>
-      <boolProp name="ForeachController.useSeparator">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/process_orders/for_each_order.jmx</stringProp></ForeachController>
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
+      <stringProp name="BeanShellSampler.query">vars.put("entity", "customer");
+String behavior = "${adminImportCustomerBehavior}";
+vars.put("adminImportBehavior", behavior);
+String filepath = "${files_folder}${adminImportCustomerFilePath}";
+vars.put("adminImportFilePath", filepath);  </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/import_customers/setup.jmx</stringProp></BeanShellSampler>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
     <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Invoice" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Page" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
       </elementProp>
@@ -26851,30 +17969,177 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/order/${order_id}/invoice</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1723813687">Import Settings</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Validate" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="entity" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${entity}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">entity</stringProp>
+          </elementProp>
+          <elementProp name="behavior" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">behavior</stringProp>
+          </elementProp>
+          <elementProp name="validation_strategy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">validation_strategy</stringProp>
+          </elementProp>
+          <elementProp name="allowed_error_count" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">10</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">allowed_error_count</stringProp>
+          </elementProp>
+          <elementProp name="_import_field_separator" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_import_field_separator</stringProp>
+          </elementProp>
+          <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/validate</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
+      <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
+        <collectionProp name="HTTPFileArgs.files">
+          <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
+            <stringProp name="File.path">${adminImportFilePath}</stringProp>
+            <stringProp name="File.paramname">import_file</stringProp>
+            <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/process_orders/create_invoice.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import_validate.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
       <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="34237953">"\d+"</stringProp>
+          <stringProp name="37280142">File is valid! To start import process</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">16</intProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Shipment" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Start" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="entity" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${entity}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">entity</stringProp>
+          </elementProp>
+          <elementProp name="behavior" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">behavior</stringProp>
+          </elementProp>
+          <elementProp name="validation_strategy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">validation_strategy</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="allowed_error_count" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">10</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">allowed_error_count</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="_import_field_separator" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_import_field_separator</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+        </collectionProp>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -26882,35 +18147,78 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/order/${order_id}/ship</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/start</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
+      <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
+        <collectionProp name="HTTPFileArgs.files">
+          <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
+            <stringProp name="File.path">${adminImportFilePath}</stringProp>
+            <stringProp name="File.paramname">import_file</stringProp>
+            <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/process_orders/create_shipment.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import_save.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
       <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="34237953">"\d+"</stringProp>
+          <stringProp name="-1731221824">Import successfully done</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">16</intProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
   </hashTree>
 
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Catalog Browsing" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Export Products" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${exportProductsPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -26931,14 +18239,98 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "API Catalog Browsing");
+                vars.put("testLabel", "Export Products");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
         <hashTree/>
     
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get categories" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
+        <hashTree/>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
+        <hashTree/>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
@@ -26947,7 +18339,7 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -26955,42 +18347,109 @@ if (testLabel
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/get_categories.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1294635157">errors</stringProp>
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">6</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable"/>
+        <intProp name="Assertion.test_type">2</intProp>
       </ResponseAssertion>
       <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract search category id" enabled="true">
-        <stringProp name="VAR">search_category_id</stringProp>
-        <stringProp name="JSONPATH">$.id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
       <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert search category id is not null" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
+          <stringProp name="2845929">^.+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">1</intProp>
         <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">search_category_id</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get category" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="dummy" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
+          </elementProp>
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+          </elementProp>
+          <elementProp name="login[password]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
+          </elementProp>
+          <elementProp name="login[username]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Export Page" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
@@ -26999,7 +18458,7 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories/${search_category_id}</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/export/</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -27007,541 +18466,574 @@ if (testLabel
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/get_category.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/export.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1294635157">errors</stringProp>
+          <stringProp name="1723813687">Export Settings</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">6</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable"/>
+        <intProp name="Assertion.test_type">2</intProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get products" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Export Products" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
+          <elementProp name="form_key" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="attribute_code" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">attribute_code</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[allow_message][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[allow_message][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[allow_open_amount]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[allow_open_amount]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[category_ids]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[category_ids]</stringProp>
+            <stringProp name="Argument.value">24,25,26,27,28,29,30</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[configurable_variations]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[configurable_variations]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[cost][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[cost][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[country_of_manufacture]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[country_of_manufacture]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[created_at]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[created_at]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[custom_design]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[custom_design]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[custom_design_from][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[custom_design_from][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[custom_design_to][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[custom_design_to][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[custom_layout_update]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[custom_layout_update]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[description]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[description]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[email_template]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[email_template]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[gallery]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[gallery]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[gift_message_available]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[gift_message_available]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[gift_wrapping_available]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[gift_wrapping_available]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[gift_wrapping_price][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[gift_wrapping_price][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[group_price][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[group_price][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[has_options]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[has_options]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[image]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[image]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[image_label]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[image_label]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[is_redeemable][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[is_redeemable][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[is_returnable]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[is_returnable]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[lifetime][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[lifetime][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[links_exist][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[links_exist][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[links_purchased_separately][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[links_purchased_separately][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[links_title]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[links_title]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[media_gallery]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[media_gallery]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[meta_description]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[meta_description]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[meta_keyword]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[meta_keyword]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[meta_title]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[meta_title]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[minimal_price][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[minimal_price][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[msrp][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[msrp][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[msrp_display_actual_price_type]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[msrp_display_actual_price_type]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[name]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[name]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[news_from_date][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[news_from_date][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[news_to_date][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[news_to_date][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[old_id][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[old_id][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[open_amount_max][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[open_amount_max][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[open_amount_min][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[open_amount_min][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[options_container]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[options_container]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[page_layout]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[page_layout]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[price][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[price][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[price_type][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[price_type][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[price_view]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[price_view]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[quantity_and_stock_status]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[quantity_and_stock_status]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[related_tgtr_position_behavior][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[related_tgtr_position_behavior][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[related_tgtr_position_limit][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[related_tgtr_position_limit][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[required_options]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[required_options]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[samples_title]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[samples_title]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[shipment_type][]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">20</stringProp>
+            <stringProp name="Argument.name">export_filter[shipment_type][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="searchCriteria[current_page]" elementType="HTTPArgument">
+          <elementProp name="export_filter[short_description]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.name">export_filter[short_description]</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[current_page]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/get_products.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1294635157">errors</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">6</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable"/>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Search" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "API Search");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search for simple product on frontend" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="searchCriteria[request_name]" elementType="HTTPArgument">
+          <elementProp name="export_filter[sku]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">quick_search_container</stringProp>
+            <stringProp name="Argument.name">export_filter[sku]</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[request_name]</stringProp>
           </elementProp>
-          <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
+          <elementProp name="export_filter[sku_type][]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">search_term</stringProp>
+            <stringProp name="Argument.name">export_filter[sku_type][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
           </elementProp>
-          <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
+          <elementProp name="export_filter[small_image]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">Simple</stringProp>
+            <stringProp name="Argument.name">export_filter[small_image]</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
           </elementProp>
-          <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
+          <elementProp name="export_filter[small_image_label]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">20</stringProp>
+            <stringProp name="Argument.name">export_filter[small_image_label]</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
           </elementProp>
-          <elementProp name="searchCriteria[current_page]" elementType="HTTPArgument">
+          <elementProp name="export_filter[special_from_date][]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.name">export_filter[special_from_date][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">searchCriteria[current_page]</stringProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/search</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/search_for_product_frontend.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert results are present" enabled="true">
-        <stringProp name="JSON_PATH">$.total_count</stringProp>
-        <stringProp name="EXPECTED_VALUE">0</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">true</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract search product id" enabled="true">
-        <stringProp name="VAR">search_product_id</stringProp>
-        <stringProp name="JSONPATH">$.items[0].id</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert search product id is not null" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">search_product_id</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Checkout" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "API Checkout");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create quote" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_quote.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract cart id" enabled="true">
-        <stringProp name="VAR">quote_id</stringProp>
-        <stringProp name="JSONPATH">$</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">quote_id</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add product to quote" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-	"cartItem": {&#xD;
-		"sku": "product_dynamic_${search_product_id}",&#xD;
-		"qty":"1",&#xD;
-		"quote_id":"${quote_id}"&#xD;
-	}&#xD;
-}&#xD;
-</stringProp>
+          <elementProp name="export_filter[special_price][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[special_price][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/${quote_id}/items</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/add_product_to_quote_hardwired_sku.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
-        <stringProp name="JSON_PATH">$.sku</stringProp>
-        <stringProp name="EXPECTED_VALUE">product_dynamic_${search_product_id}</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check products in quote" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/${quote_id}/items</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/check_product_in_quote_hardwired_sku.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
-        <stringProp name="JSON_PATH">$[0].sku</stringProp>
-        <stringProp name="EXPECTED_VALUE">product_dynamic_${search_product_id}</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Guest Cart" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-    "storeId": 1&#xD;
-}</stringProp>
+          <elementProp name="export_filter[special_to_date][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[special_to_date][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_guest_cart.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
-        <stringProp name="VAR">cart_id</stringProp>
-        <stringProp name="JSONPATH">$</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Guest Cart Id extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">cart_id</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add product to Guest Cart" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-	"cartItem": {&#xD;
-		"sku": "product_dynamic_${search_product_id}",&#xD;
-		"qty":"1",&#xD;
-		"quote_id":"${cart_id}"&#xD;
-	}&#xD;
-}&#xD;
-</stringProp>
+          <elementProp name="export_filter[status]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[status]</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/items</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/add_product_to_guest_cart_hardwired_sku.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
-        <stringProp name="JSON_PATH">$.quote_id</stringProp>
-        <stringProp name="EXPECTED_VALUE">^[a-z0-9-]+$</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Gift Message to Guest Cart" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{&#xD;
-	"sender": "John Doe",&#xD;
-	"recipient": "Jane Roe",&#xD;
-	"giftMessage": "Gift Message Text"&#xD;
-}&#xD;
-</stringProp>
+          <elementProp name="export_filter[tax_class_id]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[tax_class_id]</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/gift-message</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/add_gift_message_to_guest_cart.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
-        <stringProp name="JSON_PATH">$</stringProp>
-        <stringProp name="EXPECTED_VALUE">true</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">false</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{"address":{"country_id":"US","postcode":"95630"}}</stringProp>
+          <elementProp name="export_filter[thumbnail]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[thumbnail]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[thumbnail_label]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[thumbnail_label]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[tier_price][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[tier_price][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[updated_at]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[updated_at]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[upsell_tgtr_position_behavior][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[upsell_tgtr_position_behavior][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[upsell_tgtr_position_limit][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[upsell_tgtr_position_limit][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[url_key]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[url_key]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[url_path]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[url_path]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[use_config_allow_message][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[use_config_allow_message][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/guest_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-        <collectionProp name="HeaderManager.headers">
-          <elementProp name="" elementType="Header">
-            <stringProp name="Header.name">Referer</stringProp>
-            <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
+          <elementProp name="export_filter[use_config_email_template][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[use_config_email_template][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
           </elementProp>
-          <elementProp name="Content-Type" elementType="Header">
-            <stringProp name="Header.name">Content-Type</stringProp>
-            <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
+          <elementProp name="export_filter[use_config_is_redeemable][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[use_config_is_redeemable][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
           </elementProp>
-          <elementProp name="X-Requested-With" elementType="Header">
-            <stringProp name="Header.name">X-Requested-With</stringProp>
-            <stringProp name="Header.value">XMLHttpRequest</stringProp>
+          <elementProp name="export_filter[use_config_lifetime][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[use_config_lifetime][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
           </elementProp>
-          <elementProp name="Accept" elementType="Header">
-            <stringProp name="Header.name">Accept</stringProp>
-            <stringProp name="Header.value">application/json</stringProp>
+          <elementProp name="export_filter[visibility]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[visibility]</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
           </elementProp>
-        </collectionProp>
-      </HeaderManager>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1224567411">"available":true</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{"addressInformation":{"shipping_address":{"countryId":"US","regionId":"12","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"},"shipping_method_code":"flatrate","shipping_carrier_code":"flatrate"}}</stringProp>
+          <elementProp name="export_filter[weight][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[weight][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="export_filter[weight_type][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">export_filter[weight_type][]</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          </elementProp>
+          <elementProp name="frontend_label" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.name">frontend_label</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -27551,7 +19043,7 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/export/export/entity/catalog_product/file_format/csv</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -27559,50 +19051,23 @@ if (testLabel
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/guest_checkout/checkout_billing_shipping_information.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/export_products/export_products.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-        <collectionProp name="HeaderManager.headers">
-          <elementProp name="" elementType="Header">
-            <stringProp name="Header.name">Referer</stringProp>
-            <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
-          </elementProp>
-          <elementProp name="Content-Type" elementType="Header">
-            <stringProp name="Header.name">Content-Type</stringProp>
-            <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
-          </elementProp>
-          <elementProp name="X-Requested-With" elementType="Header">
-            <stringProp name="Header.name">X-Requested-With</stringProp>
-            <stringProp name="Header.value">XMLHttpRequest</stringProp>
-          </elementProp>
-          <elementProp name="Accept" elementType="Header">
-            <stringProp name="Header.name">Accept</stringProp>
-            <stringProp name="Header.value">application/json</stringProp>
-          </elementProp>
-        </collectionProp>
-      </HeaderManager>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1494218646">{"payment_methods":</stringProp>
+          <stringProp name="-261088822">Simple Product 1</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">16</intProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
+  </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order" enabled="true">
-      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">false</boolProp>
-            <stringProp name="Argument.value">{"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"12","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname","save_in_address_book":0}}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-          </elementProp>
-        </collectionProp>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -27610,76 +19075,36 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/checkout_payment_info_place_order.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-        <collectionProp name="HeaderManager.headers">
-          <elementProp name="" elementType="Header">
-            <stringProp name="Header.name">Referer</stringProp>
-            <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
-          </elementProp>
-          <elementProp name="Content-Type" elementType="Header">
-            <stringProp name="Header.name">Content-Type</stringProp>
-            <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
-          </elementProp>
-          <elementProp name="X-Requested-With" elementType="Header">
-            <stringProp name="Header.name">X-Requested-With</stringProp>
-            <stringProp name="Header.value">XMLHttpRequest</stringProp>
-          </elementProp>
-          <elementProp name="Accept" elementType="Header">
-            <stringProp name="Header.name">Accept</stringProp>
-            <stringProp name="Header.value">application/json</stringProp>
-          </elementProp>
-        </collectionProp>
-      </HeaderManager>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-297987887">"[0-9]+"</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract cart id" enabled="true">
-        <stringProp name="VAR">order_id</stringProp>
-        <stringProp name="JSONPATH">$</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="89649215">^\d+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">order_id</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
   </hashTree>
-
   </hashTree>
 
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Product Grid Mass Actions" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Export Customers" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${productGridMassActionPercentage}</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${exportCustomersPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -27700,7 +19125,7 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Product Grid Mass Actions");
+                vars.put("testLabel", "Export Customers");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
@@ -27760,10 +19185,36 @@ if (testLabel
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
     <hashTree/>
   
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
     <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
     <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
@@ -27877,8 +19328,44 @@ if (testLabel
         <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
         <hashTree/>
     </hashTree>
+  </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Product Pages Count" enabled="true">
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Export Page" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/export/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/export.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1723813687">Export Settings</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Export Customers" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
           <elementProp name="form_key" elementType="HTTPArgument">
@@ -27887,238 +19374,206 @@ if (testLabel
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
             <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
           </elementProp>
-          <elementProp name="namespace" elementType="HTTPArgument">
+          <elementProp name="attribute_code" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">product_listing</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.name">attribute_code</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
+          <elementProp name="export_filter[confirmation]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.name">export_filter[confirmation]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+          <elementProp name="export_filter[created_at]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.name">export_filter[created_at]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+          <elementProp name="export_filter[created_in]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">20</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.name">export_filter[created_in]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
+          <elementProp name="export_filter[default_billing][]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.name">export_filter[default_billing][]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
+          <elementProp name="export_filter[default_shipping][]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.name">export_filter[default_shipping][]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+          <elementProp name="export_filter[disable_auto_group_change]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.name">export_filter[disable_auto_group_change]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
+          <elementProp name="export_filter[dob][]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.value">,</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.name">export_filter[dob][]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/get_product_pages_count.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
-        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
-        <stringProp name="EXPECTED_VALUE">0</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">true</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
-        <stringProp name="VAR">products_number</stringProp>
-        <stringProp name="JSONPATH">$.totalRecords</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Calculate pages count" enabled="true">
-        <boolProp name="resetInterpreter">false</boolProp>
-        <stringProp name="parameters"/>
-        <stringProp name="filename"/>
-        <stringProp name="script">var productsPageSize = Integer.parseInt(vars.get("products_page_size"));
-var productsTotal = Integer.parseInt(vars.get("products_number"));
-var pageCountProducts = Math.round(productsTotal/productsPageSize);
-
-vars.put("pages_count_product", String.valueOf(pageCountProducts));</stringProp>
-      </BeanShellPostProcessor>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
-      <stringProp name="BeanShellSampler.query">
-import java.util.Random;
-Random random = new Random();
-if (${seedForRandom} &gt; 0) {
-    random.setSeed(${seedForRandom});
-}
-var productsPageSize = Integer.parseInt(vars.get("products_page_size"));
-var totalNumberOfPages = Integer.parseInt(vars.get("pages_count_product"));
-
-// Randomly select a page.
-var randomProductsPage = Math.floor((Math.random() * totalNumberOfPages) + 1);
-
-// Get the first and last product id on that page.
-var lastProductIdOnPage = randomProductsPage * productsPageSize;
-var firstProductIdOnPage = lastProductIdOnPage - productsPageSize + 1;
-
-var randomProductId1 = Math.floor(random.nextInt(productsPageSize)) + firstProductIdOnPage;
-var randomProductId2 = Math.floor(random.nextInt(productsPageSize)) + firstProductIdOnPage;
-var randomProductId3 = Math.floor(random.nextInt(productsPageSize)) + firstProductIdOnPage;
-
-vars.put("page_number", String.valueOf(randomProductsPage));
-vars.put("productId1", String.valueOf(randomProductId1));
-vars.put("productId2", String.valueOf(randomProductId2));
-vars.put("productId3", String.valueOf(randomProductId3));
-
-var randomQuantity = Math.floor(Math.random() * 1000) + 1;
-var randomPrice = Math.floor(Math.random() * 500) + 10;
-var randomVisibility = Math.floor(random.nextInt(4)) + 1;
-
-vars.put("quantity", String.valueOf(randomQuantity));
-vars.put("price", String.valueOf(randomPrice));
-vars.put("visibility", String.valueOf(randomVisibility));
-
-
-      </stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/products_grid_mass_actions/setup.jmx</stringProp></BeanShellSampler>
-    <hashTree/>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select Products and Update Attributes mass action" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
+          <elementProp name="export_filter[email]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.name">export_filter[email]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="namespace" elementType="HTTPArgument">
+          <elementProp name="export_filter[firstname]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">product_listing</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
+            <stringProp name="Argument.name">export_filter[firstname]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
+          <elementProp name="export_filter[gender]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
+            <stringProp name="Argument.name">export_filter[gender]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+          <elementProp name="export_filter[group_id]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            <stringProp name="Argument.name">export_filter[group_id]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+          <elementProp name="export_filter[lastname]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${products_page_size}</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            <stringProp name="Argument.name">export_filter[lastname]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
+          <elementProp name="export_filter[middlename]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${page_number}</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
+            <stringProp name="Argument.name">export_filter[middlename]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
+          <elementProp name="export_filter[password_hash]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">export_filter[password_hash]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="export_filter[prefix]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">export_filter[prefix]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="export_filter[reward_update_notification][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">export_filter[reward_update_notification][]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="export_filter[reward_warning_notification][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">export_filter[reward_warning_notification][]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="export_filter[rp_token]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">export_filter[rp_token]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="export_filter[rp_token_created_at][]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">export_filter[rp_token_created_at][]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="export_filter[store_id]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">export_filter[store_id]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="export_filter[suffix]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">export_filter[suffix]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="export_filter[taxvat]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
+            <stringProp name="Argument.name">export_filter[taxvat]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+          <elementProp name="export_filter[website_id]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
+            <stringProp name="Argument.name">export_filter[website_id]</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
+          <elementProp name="frontend_label" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.name">frontend_label</stringProp>
             <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
         </collectionProp>
@@ -28129,75 +19584,116 @@ vars.put("visibility", String.valueOf(randomVisibility));
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/export/export/entity/customer/file_format/csv</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/products_grid_mass_actions/display_grid.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/export_customers/export_customers.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
       <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="1637639774">totalRecords</stringProp>
+          <stringProp name="-2040454917">user_1@example.com</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">16</intProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
+  </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Display Update Attributes" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${apiBasePercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "API");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+      <collectionProp name="HeaderManager.headers">
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">Content-Type</stringProp>
+          <stringProp name="Header.value">application/json</stringProp>
+        </elementProp>
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">Accept</stringProp>
+          <stringProp name="Header.value">*/*</stringProp>
+        </elementProp>
+      </collectionProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
+    <hashTree/>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="selected[0]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${productId1}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">selected[0]</stringProp>
-          </elementProp>
-          <elementProp name="selected[1]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${productId2}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">selected[1]</stringProp>
-          </elementProp>
-          <elementProp name="selected[2]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${productId3}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">selected[2]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-          <elementProp name="namespace" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">product_listing</stringProp>
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -28207,244 +19703,52 @@ vars.put("visibility", String.valueOf(randomVisibility));
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_action_attribute/edit</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/products_grid_mass_actions/display_update_attributes.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+        <stringProp name="VAR">admin_token</stringProp>
+        <stringProp name="JSONPATH">$</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="1862384910">Update Attributes</stringProp>
+          <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_token</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Validate Attributes" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments">
-        <elementProp name="isAjax" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">true</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">isAjax</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="form_key" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${admin_form_key}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">form_key</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="inventory[qty]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${quantity}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">inventory[qty]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="attributes[price]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${price}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">attributes[price]</stringProp>
-        </elementProp>
-        <elementProp name="attributes[visibility]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${visibility}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">attributes[visibility]</stringProp>
-        </elementProp>
-      </collectionProp>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_action_attribute/validate</stringProp>
-    <stringProp name="HTTPSampler.method">POST</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/products_grid_mass_actions/change_attributes.jmx</stringProp></HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="1853918323">{"error":false}</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
-    <hashTree/>
-  </hashTree>
-  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Attributes" enabled="true">
-    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-      <collectionProp name="Arguments.arguments">
-        <elementProp name="isAjax" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">true</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">isAjax</stringProp>
-          <stringProp name="Argument.desc">false</stringProp>
-        </elementProp>
-        <elementProp name="form_key" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${admin_form_key}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">form_key</stringProp>
-          <stringProp name="Argument.desc">false</stringProp>
-        </elementProp>
-        <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">product[product_has_weight]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
-        </elementProp>
-        <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">1</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="inventory[qty]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${quantity}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">inventory[qty]</stringProp>
-        </elementProp>
-        <elementProp name="toggle_qty" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">on</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">toggle_price</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="attributes[price]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${price}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">attributes[price]</stringProp>
-        </elementProp>
-        <elementProp name="toggle_price" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">on</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">toggle_price</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
-        </elementProp>
-        <elementProp name="attributes[visibility]" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">${visibility}</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">attributes[visibility]</stringProp>
-        </elementProp>
-        <elementProp name="toggle_visibility" elementType="HTTPArgument">
-          <boolProp name="HTTPArgument.always_encode">true</boolProp>
-          <stringProp name="Argument.value">on</stringProp>
-          <stringProp name="Argument.metadata">=</stringProp>
-          <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          <stringProp name="Argument.name">toggle_visibility</stringProp>
-          <stringProp name="Argument.desc">true</stringProp>
+    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+      <collectionProp name="HeaderManager.headers">
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">Authorization</stringProp>
+          <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
         </elementProp>
       </collectionProp>
-    </elementProp>
-    <stringProp name="HTTPSampler.domain"/>
-    <stringProp name="HTTPSampler.port"/>
-    <stringProp name="HTTPSampler.connect_timeout"/>
-    <stringProp name="HTTPSampler.response_timeout"/>
-    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-    <stringProp name="HTTPSampler.contentEncoding"/>
-    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_action_attribute/save/store/0/active_tab/attributes</stringProp>
-    <stringProp name="HTTPSampler.method">POST</stringProp>
-    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-    <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
-    <boolProp name="HTTPSampler.monitor">false</boolProp>
-    <stringProp name="HTTPSampler.embedded_url_re"/>
-  </HTTPSamplerProxy>
-  <hashTree>
-    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-      <collectionProp name="Asserion.test_strings">
-        <stringProp name="1848809106">were updated.</stringProp>
-      </collectionProp>
-      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-      <boolProp name="Assertion.assume_success">false</boolProp>
-      <intProp name="Assertion.test_type">2</intProp>
-    </ResponseAssertion>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
     <hashTree/>
-  </hashTree>
-</hashTree>
-  </hashTree>
-
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Account management" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Process Orders" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${adminAccountManagementPercentage}</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -28465,108 +19769,100 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Admin Account management");
+                vars.put("testLabel", "API Process Orders");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
         <hashTree/>
     
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies">
-        <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
-          <stringProp name="Cookie.value">30</stringProp>
-          <stringProp name="Cookie.domain">${host}</stringProp>
-          <stringProp name="Cookie.path">/</stringProp>
-          <boolProp name="Cookie.secure">false</boolProp>
-          <longProp name="Cookie.expires">0</longProp>
-          <boolProp name="Cookie.path_specified">true</boolProp>
-          <boolProp name="Cookie.domain_specified">true</boolProp>
-        </elementProp>
-        <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
-          <stringProp name="Cookie.value">${form_key}</stringProp>
-          <stringProp name="Cookie.domain">${host}</stringProp>
-          <stringProp name="Cookie.path">${base_path}</stringProp>
-          <boolProp name="Cookie.secure">false</boolProp>
-          <longProp name="Cookie.expires">0</longProp>
-          <boolProp name="Cookie.path_specified">true</boolProp>
-          <boolProp name="Cookie.domain_specified">true</boolProp>
-        </elementProp>
-      </collectionProp>
-      <boolProp name="CookieManager.clearEachIteration">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_customer_email.jmx</stringProp>
-      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
+      <stringProp name="BeanShellSampler.query">// Each thread gets an equal number of orders, based on how many orders are available.
 
-String siterator = vars.get("customer_emails_index");
-int iterator;
-if(siterator == null){
-    iterator = 0;
-    vars.put("customer_emails_index", "0");
-} else {
-    iterator = Integer.parseInt(siterator);
-    iterator ++;
-    vars.put("customer_emails_index", iterator.toString());
-}
+      int apiProcessOrders = Integer.parseInt("${apiProcessOrders}");
+      if (apiProcessOrders &gt; 0) {
+      ordersPerThread = apiProcessOrders;
+      } else {
+      ordersPerThread = 1;
+      }
 
-emails_list = props.get("customer_emails_list");
 
-threadsNumber = ctx.getThreadGroup().getNumThreads();
-emailsCount = emails_list.size();
-if (threadsNumber &gt; emailsCount) {
-    log.error(" There are not enough customers for this scenario.");
-} else {
-    clusterLength = Math.round(emailsCount / threadsNumber);
-    threadNum = ctx.getThreadNum();
-    emails_index = clusterLength * threadNum + iterator;
-    maxLimit = clusterLength * (threadNum + 1);
-    if (emails_index &gt;= maxLimit) {
-        iterator = 0;
-        emails_index = clusterLength * threadNum + iterator;
-        vars.put("customer_emails_index", iterator.toString());
-    }
-}
-vars.put("customer_email", emails_list.get(emails_index));</stringProp>
+      threadNum = ${__threadNum};
+      vars.put("ordersPerThread", String.valueOf(ordersPerThread));
+      vars.put("threadNum", String.valueOf(threadNum));
+
+      </stringProp>
       <stringProp name="BeanShellSampler.filename"/>
       <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    </BeanShellSampler>
+      <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/process_orders/setup.jmx</stringProp></BeanShellSampler>
     <hashTree/>
   
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Orders" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">status</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
+          </elementProp>
+          <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">Pending</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
+          </elementProp>
+          <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${ordersPerThread}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
+          </elementProp>
+          <elementProp name="searchCriteria[current_page]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${threadNum}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">searchCriteria[current_page]</stringProp>
+          </elementProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/orders</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/process_orders/get_orders.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract entity ids" enabled="true">
+        <stringProp name="VAR">entity_ids</stringProp>
+        <stringProp name="JSONPATH">$.items[*].entity_id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+    </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
+    <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Order" enabled="true">
+      <stringProp name="ForeachController.inputVal">entity_ids</stringProp>
+      <stringProp name="ForeachController.returnVal">order_id</stringProp>
+      <boolProp name="ForeachController.useSeparator">true</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/process_orders/for_each_order.jmx</stringProp></ForeachController>
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Invoice" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
       </elementProp>
@@ -28576,19 +19872,19 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/order/${order_id}/invoice</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/process_orders/create_invoice.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
       <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
+          <stringProp name="34237953">"\d+"</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
@@ -28597,38 +19893,9 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Shipment" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${customer_email}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${customer_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="send" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">send</stringProp>
-          </elementProp>
-        </collectionProp>
+        <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -28636,7 +19903,7 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/order/${order_id}/ship</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -28644,61 +19911,67 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/process_orders/create_shipment.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
       <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
+          <stringProp name="34237953">"\d+"</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">2</intProp>
       </ResponseAssertion>
       <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">addressId</stringProp>
-        <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">addressId</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
     </hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Product Management" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "API Product Management");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create product" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="sections" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sections</stringProp>
-          </elementProp>
-          <elementProp name="update_section_id" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">false</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">update_section_id</stringProp>
-          </elementProp>
-          <elementProp name="_" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+    "product": {&#xD;
+        "sku": "psku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
+        "name": "Product_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
+        "attributeSetId": 4&#xD;
+    }&#xD;
+}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -28708,20 +19981,91 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    </HTTPSamplerProxy>
-    <hashTree/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_product_no_custom_attributes.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract product id" enabled="true">
+        <stringProp name="VAR">simple_product_id</stringProp>
+        <stringProp name="JSONPATH">$.id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract product sku" enabled="true">
+        <stringProp name="VAR">simple_product_sku</stringProp>
+        <stringProp name="JSONPATH">$.sku</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract stock item id" enabled="true">
+        <stringProp name="VAR">simple_stock_item_id</stringProp>
+        <stringProp name="JSONPATH">$.extension_attributes.stock_item.item_id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product id not null" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="89649215">^\d+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">simple_product_id</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product sku not null" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">simple_product_sku</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert stock item id not null" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="89649215">^\d+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">simple_stock_item_id</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Orders" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update product stock info" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+        "stock_item": {   &#xD;
+        	"manage_stock": true,    &#xD;
+        	"is_in_stock": true,&#xD;
+          "qty": ${simple_product_id}&#xD;
+        }&#xD;
+    }</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -28729,162 +20073,36 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}sales/order/history/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/${simple_product_sku}/stockItems/${simple_stock_item_id}</stringProp>
+      <stringProp name="HTTPSampler.method">PUT</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/my_orders.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/update_product_stock_info.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="220295440">&lt;title&gt;My Orders&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract orderId" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">orderId</stringProp>
-        <stringProp name="RegexExtractor.regex">sales/order/view/order_id/(\d+)/</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
+        <stringProp name="JSON_PATH">$</stringProp>
+        <stringProp name="EXPECTED_VALUE">${simple_stock_item_id}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
       <hashTree/>
     </hashTree>
   
-    <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Orders Controller" enabled="true">
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/if_orders.jmx</stringProp>
-      <stringProp name="IfController.condition">"${orderId}" != "NOT_FOUND"</stringProp>
-      <boolProp name="IfController.evaluateAll">false</boolProp>
-    </IfController>
-    <hashTree>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Order" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}sales/order/view/order_id/${orderId}</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="1956770127">&lt;title&gt;Order #</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract shipment tab" enabled="true">
-          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-          <stringProp name="RegexExtractor.refname">shipment_tab</stringProp>
-          <stringProp name="RegexExtractor.regex">sales/order/shipment/order_id/(\d+)..Order Shipments</stringProp>
-          <stringProp name="RegexExtractor.template">$1$</stringProp>
-          <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
-          <stringProp name="RegexExtractor.match_number">1</stringProp>
-        </RegexExtractor>
-        <hashTree/>
-      </hashTree>
-      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Shipments Controller" enabled="true">
-        <stringProp name="TestPlan.comments">May not have shipped</stringProp>
-        <stringProp name="IfController.condition">"${shipment_tab}" != "NOT_FOUND"</stringProp>
-        <boolProp name="IfController.evaluateAll">false</boolProp>
-      </IfController>
-      <hashTree>
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Order Shipments" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"/>
-          <stringProp name="HTTPSampler.port"/>
-          <stringProp name="HTTPSampler.connect_timeout"/>
-          <stringProp name="HTTPSampler.response_timeout"/>
-          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"/>
-          <stringProp name="HTTPSampler.path">${base_path}sales/order/shipment/order_id/${orderId}</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <boolProp name="HTTPSampler.monitor">false</boolProp>
-          <stringProp name="HTTPSampler.embedded_url_re"/>
-        </HTTPSamplerProxy>
-        <hashTree>
-          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-            <collectionProp name="Asserion.test_strings">
-              <stringProp name="120578727">Track this shipment</stringProp>
-            </collectionProp>
-            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-            <boolProp name="Assertion.assume_success">false</boolProp>
-            <intProp name="Assertion.test_type">2</intProp>
-          </ResponseAssertion>
-          <hashTree/>
-          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract popup link" enabled="true">
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.refname">popupLink</stringProp>
-            <stringProp name="RegexExtractor.regex">popupWindow": {"windowURL":"([^'"]+)",</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.default"/>
-            <stringProp name="RegexExtractor.match_number">1</stringProp>
-          </RegexExtractor>
-          <hashTree/>
-        </hashTree>
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Track Shipment" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check product" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
-          <stringProp name="HTTPSampler.domain"/>
-          <stringProp name="HTTPSampler.port"/>
-          <stringProp name="HTTPSampler.connect_timeout"/>
-          <stringProp name="HTTPSampler.response_timeout"/>
-          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"/>
-          <stringProp name="HTTPSampler.path">${popupLink}</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <boolProp name="HTTPSampler.monitor">false</boolProp>
-          <stringProp name="HTTPSampler.embedded_url_re"/>
-        </HTTPSamplerProxy>
-        <hashTree>
-          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-            <collectionProp name="Asserion.test_strings">
-              <stringProp name="-760430210">&lt;title&gt;Tracking Information&lt;/title&gt;</stringProp>
-            </collectionProp>
-            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-            <boolProp name="Assertion.assume_success">false</boolProp>
-            <intProp name="Assertion.test_type">2</intProp>
-          </ResponseAssertion>
-          <hashTree/>
-        </hashTree>
-      </hashTree>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Downloadable Products" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
+        </collectionProp>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -28892,7 +20110,7 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}downloadable/customer/products</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/${simple_product_sku}</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -28900,46 +20118,94 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/my_downloadable_products.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/check_product.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="358050505">&lt;title&gt;My Downloadable Products&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product sku" enabled="true">
+        <stringProp name="JSON_PATH">$.sku</stringProp>
+        <stringProp name="EXPECTED_VALUE">${simple_product_sku}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
       <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract orderId" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">orderId</stringProp>
-        <stringProp name="RegexExtractor.regex">sales/order/view/order_id/(\d+)/</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product id" enabled="true">
+        <stringProp name="JSON_PATH">$.id</stringProp>
+        <stringProp name="EXPECTED_VALUE">${simple_product_id}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
       <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract linkId" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">linkId</stringProp>
-        <stringProp name="RegexExtractor.regex">downloadable/download/link/id/(\d+)/</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert stock item id" enabled="true">
+        <stringProp name="JSON_PATH">$.extension_attributes.stock_item.item_id</stringProp>
+        <stringProp name="EXPECTED_VALUE">${simple_stock_item_id}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert updated quantity" enabled="true">
+        <stringProp name="JSON_PATH">$.extension_attributes.stock_item.qty</stringProp>
+        <stringProp name="EXPECTED_VALUE">${simple_product_id}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
       <hashTree/>
     </hashTree>
   
-    <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Downloadables Controller" enabled="true">
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/if_downloadables.jmx</stringProp>
-      <stringProp name="IfController.condition">"${orderId}" != "NOT_FOUND"</stringProp>
-      <boolProp name="IfController.evaluateAll">false</boolProp>
-    </IfController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Downloadable Product" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create product with extensible data objects" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+    "product": {&#xD;
+        "sku": "apsku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
+        "name": "Extensible_Product_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
+        "visibility": "4",&#xD;
+        "type_id": "simple",&#xD;
+        "price": "3.62",&#xD;
+        "status": "1",&#xD;
+        "attribute_set_id": "4",&#xD;
+        "custom_attributes": [&#xD;
+            {&#xD;
+                "attribute_code": "cost",&#xD;
+                "value": ""&#xD;
+            },&#xD;
+            {&#xD;
+                "attribute_code": "description",&#xD;
+                "value": "Description"&#xD;
+            }&#xD;
+        ],&#xD;
+        "extension_attributes":{&#xD;
+		"stock_item":{&#xD;
+		"manage_stock": true,    &#xD;
+		"is_in_stock": true,&#xD;
+		"qty":"100"&#xD;
+		}&#xD;
+    	   }        ,&#xD;
+    	   "media_gallery_entries":&#xD;
+    	   	[{&#xD;
+    	   		"id": null,&#xD;
+    	   		"label":"test_label_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
+    	   		"position":1,&#xD;
+    	   		"disabled":false,&#xD;
+    	   		"media_type":"image",&#xD;
+    	   		"types":["image"],&#xD;
+    	   		"content":{&#xD;
+    	   			"base64_encoded_data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABgAGADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iioLy8t9Ps5bu7lWKCIZd26KKaTbshpX0RPRXN/8J/4V/6DVv8Ak3+FH/Cf+Ff+g1b/AJN/hXR9SxP/AD7l9zNPYVf5X9x0lFc3/wAJ/wCFf+g1b/k3+FH/AAn/AIV/6DVv+Tf4UfUsT/z7l9zD2FX+V/cdJRXN/wDCf+Ff+g1b/k3+FH/Cf+Ff+g1b/k3+FH1LE/8APuX3MPYVf5X9x0lFc3/wn/hX/oNW/wCTf4Uf8J/4V/6DVv8Ak3+FH1LE/wDPuX3MPYVf5X9x0lFVdP1G01WyS8sZ1nt3JCyL0ODg/qKtVzyi4u0lZmbTTswrm/H3/Iiav/1x/wDZhXSVzfj7/kRNX/64/wDswrowf+80/wDEvzNKH8WPqj5voorB1zS7OLT7m7SHE5YNu3HqWGeM471+kYutOhSdSEU7Jt3dtF20f6H1FacqcHJK9vO36M3qKzTa6foqPdxwlWxswrFi2T0AJ9aRdVmjkT7XYSW8TsFEm8MAT0yB0qfrcafu1tJeV2l2u7K3zsL2yjpPR+V3+NjTorPn1GVbt7a1s2uJIwDJ84ULnpyaik1SWTTrp47Z0uIQRJGzAFOPvZ70Sx1GLau9L9H03SdrNrsgdeCuu3k+hq0VR0ma4msImuIih2LtYvuLjA+b2zV6uijUVWmprqaQkpxUl1PoP4Xf8iBYf78v/oxq7GuO+F3/ACIFh/vy/wDoxq7GvzTMf98q/wCJ/mfLYn+NP1YVzfj7/kRNX/64/wDswrpK5vx9/wAiJq//AFx/9mFRg/8Aeaf+JfmTQ/ix9UfN9ZniD/kB3H/Af/QhWnTZI45kKSIroeqsMg1+l4mk61GdNfaTX3o+pqw54Sj3Rma/GXsI3BcLFMruU+8F5yR+dUZ4tOeNFOq3tx5jACNZg5J+mK6PrUMdrbxPvjgiR/7yoAa48TgPa1HNW1STvfp2s1+JjVw/PJy017mbe/YTqTB7iWzuQgPmhtocfjwajiupbjTtTieUXCxRsqTKMb8qePwrYlghnAE0UcgHQOoP86ckaRoERFVR/CowKbwU3UclJJO+19brqr203vvoHsJczd7J3/H8PmVNJnhm063WOVHZIkDhTkqcd/yNXajighg3eTFHHu67FAz+VSV2UIShTjGe67G9NOMUpbn0H8Lv+RAsP9+X/wBGNXY1x3wu/wCRAsP9+X/0Y1djX5tmP++Vf8T/ADPl8T/Gn6sK5vx9/wAiJq//AFx/9mFdJXN+Pv8AkRNX/wCuP/swqMH/ALzT/wAS/Mmh/Fj6o+b6KKK/Uj60KKKKACiiigAooooA+g/hd/yIFh/vy/8Aoxq7GuO+F3/IgWH+/L/6Mauxr8wzH/fKv+J/mfKYn+NP1YVzfj7/AJETV/8Arj/7MK6Sub8ff8iJq/8A1x/9mFRg/wDeaf8AiX5k0P4sfVHzfRRRX6kfWhRRRQAUUUUAFFFFAH0H8Lv+RAsP9+X/ANGNXY1x3wu/5ECw/wB+X/0Y1djX5hmP++Vf8T/M+UxP8afqwqC8s7fULOW0u4llglGHRujCp6K5E2ndGKdtUc3/AMIB4V/6Atv+bf40f8IB4V/6Atv+bf410lFdH13E/wDPyX3s09vV/mf3nN/8IB4V/wCgLb/m3+NH/CAeFf8AoC2/5t/jXSUUfXcT/wA/Jfew9vV/mf3nN/8ACAeFf+gLb/m3+NH/AAgHhX/oC2/5t/jXSUUfXcT/AM/Jfew9vV/mf3nN/wDCAeFf+gLb/m3+NH/CAeFf+gLb/m3+NdJRR9dxP/PyX3sPb1f5n95V0/TrTSrJLOxgWC3QkrGvQZOT+pq1RRXPKTk7yd2Zttu7P//Z",&#xD;
+        "type": "image/jpeg",&#xD;
+        "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg"&#xD;
+    	   			}&#xD;
+    	   	}&#xD;
+    	   	]&#xD;
+    }&#xD;
+}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -28947,30 +20213,85 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}sales/order/view/order_id/${orderId}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/view_downloadable_products.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_product_with_extensible_data_objects.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract product id" enabled="true">
+        <stringProp name="VAR">simple_product_id</stringProp>
+        <stringProp name="JSONPATH">$.id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract product sku" enabled="true">
+        <stringProp name="VAR">simple_product_sku</stringProp>
+        <stringProp name="JSONPATH">$.sku</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract stock item id" enabled="true">
+        <stringProp name="VAR">simple_stock_item_id</stringProp>
+        <stringProp name="JSONPATH">$.extension_attributes.stock_item.item_id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product id not null" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="1956770127">&lt;title&gt;Order #</stringProp>
+          <stringProp name="89649215">^\d+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">simple_product_id</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product sku not null" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">simple_product_sku</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert stock item id not null" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="89649215">^\d+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">simple_stock_item_id</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Download Product" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check product with extensible data objects" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -28978,7 +20299,7 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}downloadable/download/link/id/${linkId}</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/${simple_product_sku}</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -28986,13 +20307,91 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/download_product.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/check_product_with_extensible_data_objects.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product sku" enabled="true">
+        <stringProp name="JSON_PATH">$.sku</stringProp>
+        <stringProp name="EXPECTED_VALUE">${simple_product_sku}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product id" enabled="true">
+        <stringProp name="JSON_PATH">$.id</stringProp>
+        <stringProp name="EXPECTED_VALUE">${simple_product_id}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert stock item id" enabled="true">
+        <stringProp name="JSON_PATH">$.extension_attributes.stock_item.item_id</stringProp>
+        <stringProp name="EXPECTED_VALUE">${simple_stock_item_id}</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert updated quantity" enabled="true">
+        <stringProp name="JSON_PATH">$.extension_attributes.stock_item.qty</stringProp>
+        <stringProp name="EXPECTED_VALUE">100</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
+      <hashTree/>
+    </hashTree>
   </hashTree>
+
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Wish List" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Product Attribute Management" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">100</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "API Product Attribute Management");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create attribute set" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+    "attributeSet": {&#xD;
+        "attribute_set_name": "new_attribute_set_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
+        "sort_order": 500&#xD;
+    },&#xD;
+    "skeletonId": "4"&#xD;
+}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -29000,55 +20399,52 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}wishlist</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attribute-sets/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    </HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_attribute_set.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract attribute_set_id" enabled="true">
+        <stringProp name="VAR">attribute_set_id</stringProp>
+        <stringProp name="JSONPATH">$.attribute_set_id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_set_id not null" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1907714722">&lt;title&gt;My Wish List&lt;/title&gt;</stringProp>
+          <stringProp name="89649215">^\d+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">attribute_set_id</stringProp>
       </ResponseAssertion>
       <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract wishlistId" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">wishlistId</stringProp>
-        <stringProp name="RegexExtractor.regex">wishlist/index/update/wishlist_id/([^'"]+)/</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/my_wish_list.jmx</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Verify that there are items in the wishlist" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">buttonTitle</stringProp>
-        <stringProp name="RegexExtractor.regex">Update Wish List</stringProp>
-        <stringProp name="RegexExtractor.template">FOUND</stringProp>
-        <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
     </hashTree>
   
-    <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Wish List Controller" enabled="true">
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/if_wishlist.jmx</stringProp>
-      <stringProp name="IfController.condition">"${buttonTitle}" === "FOUND"</stringProp>
-      <boolProp name="IfController.evaluateAll">false</boolProp>
-    </IfController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Share Wish List" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create attribute group" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+    "group": {&#xD;
+        "attribute_group_name": "empty_attribute_group_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
+        "attribute_set_id": ${attribute_set_id}&#xD;
+    }&#xD;
+}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -29056,51 +20452,58 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}wishlist/index/share/wishlist_id/${wishlistId}/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attribute-sets/groups</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/share_wish_list.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_attribute_group.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract attribute_group_id" enabled="true">
+        <stringProp name="VAR">attribute_group_id</stringProp>
+        <stringProp name="JSONPATH">$.attribute_group_id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_group_id not null" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="1257102154">&lt;title&gt;Wish List Sharing&lt;/title&gt;</stringProp>
+          <stringProp name="89649215">^\d+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">attribute_set_id</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Send Wish List" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create attribute" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="emails" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${customer_email}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">emails</stringProp>
-          </elementProp>
-          <elementProp name="message" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">[TEST] See my wishlist!!!</stringProp>
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+    "attribute": {&#xD;
+        "attribute_code": "attr_code_${__time()}",&#xD;
+        "frontend_labels": [&#xD;
+            {&#xD;
+                "store_id": 0,&#xD;
+                "label": "front_lbl_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}"&#xD;
+            }&#xD;
+        ],&#xD;
+        "default_value": "default value",&#xD;
+        "frontend_input": "textarea",&#xD;
+        "is_required": true&#xD;
+    }&#xD;
+}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">message</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -29110,7 +20513,7 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}wishlist/index/send/wishlist_id/${wishlistId}/</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attributes/</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -29118,23 +20521,63 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/account_management/send_wish_list.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/create_attribute.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract attribute_id" enabled="true">
+        <stringProp name="VAR">attribute_id</stringProp>
+        <stringProp name="JSONPATH">$.attribute_id</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract attribute_code" enabled="true">
+        <stringProp name="VAR">attribute_code</stringProp>
+        <stringProp name="JSONPATH">$.attribute_code</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_id not null" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1907714722">&lt;title&gt;My Wish List&lt;/title&gt;</stringProp>
+          <stringProp name="89649215">^\d+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">attribute_id</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_code not null" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2131456825">^[a-z0-9-_]+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">attribute_code</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
-  </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add attribute to attribute set" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{&#xD;
+    "attributeSetId": "${attribute_set_id}",&#xD;
+    "attributeGroupId": "${attribute_group_id}",&#xD;
+    "attributeCode": "${attribute_code}",&#xD;
+    "sortOrder": 3&#xD;
+}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -29142,34 +20585,35 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attribute-sets/attributes</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/add_attribute_to_attribute_set.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1723813687">You are signed out.</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert response is not null" enabled="true">
+        <stringProp name="JSON_PATH">$</stringProp>
+        <stringProp name="EXPECTED_VALUE">(\d+)</stringProp>
+        <boolProp name="JSONVALIDATION">true</boolProp>
+        <boolProp name="EXPECT_NULL">false</boolProp>
+        <boolProp name="INVERT">false</boolProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
       <hashTree/>
     </hashTree>
   </hashTree>
 
+  </hashTree>
+
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Catalog Browsing By Customer" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Create Product" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${browseCatalogByCustomerPercentage}</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${adminProductCreationPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -29190,111 +20634,97 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Catalog Browsing By Customer");
+                vars.put("testLabel", "Admin Create Product");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
         <hashTree/>
     
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies">
-        <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
-          <stringProp name="Cookie.value">30</stringProp>
-          <stringProp name="Cookie.domain">${host}</stringProp>
-          <stringProp name="Cookie.path">/</stringProp>
-          <boolProp name="Cookie.secure">false</boolProp>
-          <longProp name="Cookie.expires">0</longProp>
-          <boolProp name="Cookie.path_specified">true</boolProp>
-          <boolProp name="Cookie.domain_specified">true</boolProp>
-        </elementProp>
-        <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
-          <stringProp name="Cookie.value">${form_key}</stringProp>
-          <stringProp name="Cookie.domain">${host}</stringProp>
-          <stringProp name="Cookie.path">${base_path}</stringProp>
-          <boolProp name="Cookie.secure">false</boolProp>
-          <longProp name="Cookie.expires">0</longProp>
-          <boolProp name="Cookie.path_specified">true</boolProp>
-          <boolProp name="Cookie.domain_specified">true</boolProp>
-        </elementProp>
-      </collectionProp>
-      <boolProp name="CookieManager.clearEachIteration">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
-        <stringProp name="BeanShellSampler.query">
-import java.util.Random;
-
-Random random = new Random();
-if (${seedForRandom} &gt; 0) {
-    random.setSeed(${seedForRandom} + ${__threadNum});
-}
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
 
-vars.putObject("randomIntGenerator", random);
-        </stringProp>
-        <stringProp name="BeanShellSampler.filename"/>
-        <stringProp name="BeanShellSampler.parameters"/>
-        <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-      </BeanShellSampler>
-      <hashTree/>
-    
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Category Data" enabled="true">
-        <stringProp name="BeanShellSampler.query">
-import java.util.Random;
+        formKey = vars.get("form_key_storage");
 
-Random random = vars.getObject("randomIntGenerator");
-number = random.nextInt(props.get("category_url_keys_list").size());
+	   currentFormKey = getFormKeyFromResponse();
 
-vars.put("category_url_key", props.get("category_url_keys_list").get(number));
-vars.put("category_name", props.get("category_names_list").get(number));
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
         </stringProp>
-        <stringProp name="BeanShellSampler.filename"/>
-        <stringProp name="BeanShellSampler.parameters"/>
-        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/extract_category_setup.jmx</stringProp></BeanShellSampler>
-      <hashTree/>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
+        <hashTree/>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
+        <hashTree/>
     
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_customer_email.jmx</stringProp>
-      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
-
-String siterator = vars.get("customer_emails_index");
-int iterator;
-if(siterator == null){
-    iterator = 0;
-    vars.put("customer_emails_index", "0");
-} else {
-    iterator = Integer.parseInt(siterator);
-    iterator ++;
-    vars.put("customer_emails_index", iterator.toString());
-}
-
-emails_list = props.get("customer_emails_list");
-
-threadsNumber = ctx.getThreadGroup().getNumThreads();
-emailsCount = emails_list.size();
-if (threadsNumber &gt; emailsCount) {
-    log.error(" There are not enough customers for this scenario.");
-} else {
-    clusterLength = Math.round(emailsCount / threadsNumber);
-    threadNum = ctx.getThreadNum();
-    emails_index = clusterLength * threadNum + iterator;
-    maxLimit = clusterLength * (threadNum + 1);
-    if (emails_index &gt;= maxLimit) {
-        iterator = 0;
-        emails_index = clusterLength * threadNum + iterator;
-        vars.put("customer_emails_index", iterator.toString());
-    }
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
 }
-vars.put("customer_email", emails_list.get(emails_index));</stringProp>
+vars.put("admin_user", adminUser);
+      </stringProp>
       <stringProp name="BeanShellSampler.filename"/>
       <stringProp name="BeanShellSampler.parameters"/>
       <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
     </BeanShellSampler>
     <hashTree/>
+  </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
       </elementProp>
@@ -29304,7 +20734,7 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -29312,49 +20742,70 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">2</intProp>
       </ResponseAssertion>
       <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
+          <elementProp name="dummy" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${form_key}</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.name">dummy</stringProp>
           </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
+          <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${customer_email}</stringProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
+            <stringProp name="Argument.name">form_key</stringProp>
           </elementProp>
           <elementProp name="login[password]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${customer_password}</stringProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
             <stringProp name="Argument.name">login[password]</stringProp>
           </elementProp>
-          <elementProp name="send" elementType="HTTPArgument">
+          <elementProp name="login[username]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">send</stringProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -29364,69 +20815,156 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
+</OnceOnlyController>
+    <hashTree>
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Related Product Id" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/get_related_product_id.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
+import java.util.Random;
+Random random = new Random();
+if (${seedForRandom} &gt; 0) {
+    random.setSeed(${seedForRandom});
+}
+relatedIndex = random.nextInt(props.get("simple_products_list").size());
+vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id"));</stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Product Attributes" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+      <collectionProp name="HeaderManager.headers">
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">Content-Type</stringProp>
+          <stringProp name="Header.value">application/json</stringProp>
+        </elementProp>
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">Accept</stringProp>
+          <stringProp name="Header.value">*/*</stringProp>
+        </elementProp>
+      </collectionProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
+    <hashTree/>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
+      <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
         </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">addressId</stringProp>
-        <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+        <stringProp name="VAR">admin_token</stringProp>
+        <stringProp name="JSONPATH">$</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
       <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
+          <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">1</intProp>
         <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">addressId</stringProp>
+        <stringProp name="Scope.variable">admin_token</stringProp>
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
+  
+    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+      <collectionProp name="HeaderManager.headers">
+        <elementProp name="" elementType="Header">
+          <stringProp name="Header.name">Authorization</stringProp>
+          <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
+        </elementProp>
+      </collectionProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
+    <hashTree/>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - API Get product attributes" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="sections" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
+          <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">mycolor</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sections</stringProp>
+            <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
           </elementProp>
-          <elementProp name="update_section_id" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">false</stringProp>
+          <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">attribute_code</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">update_section_id</stringProp>
+            <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
           </elementProp>
-          <elementProp name="_" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+          <elementProp name="searchCriteria[filterGroups][0][filters][1][value]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">mysize</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_</stringProp>
+            <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][value]</stringProp>
+          </elementProp>
+          <elementProp name="searchCriteria[filterGroups][0][filters][1][field]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">false</boolProp>
+            <stringProp name="Argument.value">attribute_code</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][field]</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -29436,7 +20974,7 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attributes</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -29444,41 +20982,57 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    </HTTPSamplerProxy>
-    <hashTree/>
-  
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
-      <hashTree>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-          <collectionProp name="Asserion.test_strings">
-            <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">2</intProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/get_product_attributes.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract product attributes" enabled="true">
+        <stringProp name="VAR">product_attributes</stringProp>
+        <stringProp name="JSONPATH">$.items</stringProp>
+        <stringProp name="DEFAULT"/>
+        <stringProp name="VARIABLE"/>
+        <stringProp name="SUBJECT">BODY</stringProp>
+      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+      <hashTree/>
+      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="SetUp - Prepare product attributes" enabled="true">
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="cacheKey"/>
+        <stringProp name="script">
+var attributesData = JSON.parse(vars.get("product_attributes")),
+maxOptions = 2;
+
+attributes = [];
+for (i in attributesData) {
+    if (i &gt;= 2) {
+        break;
+    }
+    var data = attributesData[i],
+        attribute = {
+            "id": data.attribute_id,
+            "code": data.attribute_code,
+            "label": data.default_frontend_label,
+            "options": []
+        };
+
+    var processedOptions = 0;
+    for (optionN in data.options) {
+        var option = data.options[optionN];
+        if (parseInt(option.value) &gt; 0 &amp;&amp; processedOptions &lt; maxOptions) {
+            processedOptions++;
+            attribute.options.push(option);
+        }
+    }
+    attributes.push(attribute);
+}
+
+vars.putObject("product_attributes", attributes);
+</stringProp>
+      </JSR223PostProcessor>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Attribute Set Id" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
       </elementProp>
@@ -29488,7 +21042,7 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_set/index/filter/${attribute_set_filter}</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -29496,474 +21050,1019 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/configurable_setup_attribute_set.jmx</stringProp>
+    </HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">6</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
         <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">category_id</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
+        <stringProp name="RegexExtractor.refname">attribute_set_id</stringProp>
+        <stringProp name="RegexExtractor.regex">catalog\/product_set\/edit\/id\/([\d]+)\/"[\D\d]*Attribute Set 1</stringProp>
         <stringProp name="RegexExtractor.template">$1$</stringProp>
         <stringProp name="RegexExtractor.default"/>
         <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
       </RegexExtractor>
       <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1191417111">^[0-9]+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">category_id</stringProp>
-      </ResponseAssertion>
+      <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="SetUp - Set Attribute Set Filter" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">import org.apache.commons.codec.binary.Base64;
+
+byte[] encodedBytes = Base64.encodeBase64("set_name=Attribute Set 1".getBytes());
+vars.put("attribute_set_filter", new String(encodedBytes));
+</stringProp>
+      </BeanShellPreProcessor>
       <hashTree/>
     </hashTree>
+  </hashTree>
   
-    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
-      <boolProp name="LoopController.continue_forever">true</boolProp>
-      <stringProp name="LoopController.loops">2</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
     <hashTree>
-      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
-        <stringProp name="CounterConfig.start">1</stringProp>
-        <stringProp name="CounterConfig.end"/>
-        <stringProp name="CounterConfig.incr">1</stringProp>
-        <stringProp name="CounterConfig.name">_counter</stringProp>
-        <stringProp name="CounterConfig.format"/>
-        <boolProp name="CounterConfig.per_user">true</boolProp>
-        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
-      </CounterConfig>
-      <hashTree/>
-    
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
-      <stringProp name="BeanShellSampler.query">
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
+      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
 import java.util.Random;
-
-Random random = vars.getObject("randomIntGenerator");
+Random random = new Random();
+if (${seedForRandom} &gt; 0) {
+    random.setSeed(${seedForRandom});
+}
 number = random.nextInt(props.get("simple_products_list").size());
-product = props.get("simple_products_list").get(number);
+simpleList = props.get("simple_products_list").get(number);
+vars.put("simple_product_1_id", simpleList.get("id"));
+vars.put("simple_product_1_name", simpleList.get("title"));
+
+do {
+    number1 = random.nextInt(props.get("simple_products_list").size());
+} while(number == number1);
+simpleList = props.get("simple_products_list").get(number1);
+vars.put("simple_product_2_id", simpleList.get("id"));
+vars.put("simple_product_2_name", simpleList.get("title"));
+
+number2 = random.nextInt(props.get("configurable_products_list").size());
+configurableList = props.get("configurable_products_list").get(number2);
+vars.put("configurable_product_1_id", configurableList.get("id"));
+vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
+vars.put("configurable_product_1_name", configurableList.get("title"));
+
+//Additional category to be added
+//int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
+//vars.put("category_additional", (categoryId+1).toString());
+//New price
+vars.put("price_new", "9999");
+//New special price
+vars.put("special_price_new", "8888");
+//New quantity
+vars.put("quantity_new", "100600");
+vars.put("configurable_sku", "Configurable Product - ${__time(YMD)}-${__threadNum}-${__Random(1,1000000)}");
 
-vars.put("product_url_key", product.get("url_key"));
-vars.put("product_id", product.get("id"));
-vars.put("product_name", product.get("title"));
-vars.put("product_uenc", product.get("uenc"));
-vars.put("product_sku", product.get("sku"));
       </stringProp>
       <stringProp name="BeanShellSampler.filename"/>
       <stringProp name="BeanShellSampler.parameters"/>
       <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/setup.jmx</stringProp></BeanShellSampler>
     <hashTree/>
   
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                <collectionProp name="Arguments.arguments"/>
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Bundle Product" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/create_bundle_product.jmx</stringProp>
+</TestFragmentController>
+    <hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="1509986340">records found</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/bundle/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-144461265">New Product</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Validate" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="ajax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">ajax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="isAjax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[name]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[name]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[sku]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Bundle Product  ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[sku]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">42</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">111</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[weight]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1.0000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[weight]</stringProp>
+            </elementProp>
+            <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[category_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Full bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[description]</stringProp>
+            </elementProp>
+            <elementProp name="product[short_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[short_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[status]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[status]</stringProp>
+            </elementProp>
+            <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[configurable_variations]</stringProp>
+            </elementProp>
+            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
+            </elementProp>
+            <elementProp name="product[image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[image]</stringProp>
+            </elementProp>
+            <elementProp name="product[small_image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[small_image]</stringProp>
+            </elementProp>
+            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[thumbnail]</stringProp>
+            </elementProp>
+            <elementProp name="product[url_key]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[url_key]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_title]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[website_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_price]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_from_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_to_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[cost]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[cost]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">32000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">90</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">101</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">10000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+            </elementProp>
+            <elementProp name="product[page_layout]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[page_layout]</stringProp>
+            </elementProp>
+            <elementProp name="product[options_container]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">container2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options_container]</stringProp>
+            </elementProp>
+            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
+            </elementProp>
+            <elementProp name="product[shipment_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[shipment_type]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">option title one</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][title]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][option_id]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][delete]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">select</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][type]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][required]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][required]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_id]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][option_id]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][product_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][product_id]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][delete]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">25</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_qty]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_id]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][option_id]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][product_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][product_id]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][delete]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">10.99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_qty]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][position]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">option title two</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][title]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][option_id]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][delete]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">select</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][type]</stringProp>
             </elementProp>
-            <stringProp name="HTTPSampler.domain"/>
-            <stringProp name="HTTPSampler.port"/>
-            <stringProp name="HTTPSampler.connect_timeout"/>
-            <stringProp name="HTTPSampler.response_timeout"/>
-            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-            <stringProp name="HTTPSampler.contentEncoding"/>
-            <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-            <boolProp name="HTTPSampler.monitor">false</boolProp>
-            <stringProp name="HTTPSampler.embedded_url_re"/>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
-        <hashTree>
-            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                <collectionProp name="Asserion.test_strings">
-                    <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
-                </collectionProp>
-                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                <boolProp name="Assertion.assume_success">false</boolProp>
-                <intProp name="Assertion.test_type">2</intProp>
-            </ResponseAssertion>
-            <hashTree/>
-        </hashTree>
-    </hashTree>
-  
-    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
-      <boolProp name="LoopController.continue_forever">true</boolProp>
-      <stringProp name="LoopController.loops">1</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
-    <hashTree>
-      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
-        <stringProp name="CounterConfig.start">1</stringProp>
-        <stringProp name="CounterConfig.end"/>
-        <stringProp name="CounterConfig.incr">1</stringProp>
-        <stringProp name="CounterConfig.name">_counter</stringProp>
-        <stringProp name="CounterConfig.format"/>
-        <boolProp name="CounterConfig.per_user">true</boolProp>
-        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
-      </CounterConfig>
-      <hashTree/>
-    
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
-      <stringProp name="BeanShellSampler.query">
-import java.util.Random;
-
-Random random = vars.getObject("randomIntGenerator");
-number = random.nextInt(props.get("configurable_products_list").size());
-product = props.get("configurable_products_list").get(number);
-
-vars.put("product_url_key", product.get("url_key"));
-vars.put("product_id", product.get("id"));
-vars.put("product_name", product.get("title"));
-vars.put("product_uenc", product.get("uenc"));
-vars.put("product_sku", product.get("sku"));
-      </stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
-    <hashTree/>
-  
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                <collectionProp name="Arguments.arguments"/>
+            <elementProp name="bundle_options[bundle_options][1][required]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][required]</stringProp>
             </elementProp>
-            <stringProp name="HTTPSampler.domain"/>
-            <stringProp name="HTTPSampler.port"/>
-            <stringProp name="HTTPSampler.connect_timeout"/>
-            <stringProp name="HTTPSampler.response_timeout"/>
-            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-            <stringProp name="HTTPSampler.contentEncoding"/>
-            <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-            <boolProp name="HTTPSampler.monitor">false</boolProp>
-            <stringProp name="HTTPSampler.embedded_url_re"/>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
-        <hashTree>
-            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                <collectionProp name="Asserion.test_strings">
-                    <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
-                </collectionProp>
-                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                <boolProp name="Assertion.assume_success">false</boolProp>
-                <intProp name="Assertion.test_type">2</intProp>
-            </ResponseAssertion>
-            <hashTree/>
-        </hashTree>
-    </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Add To Cart By Customer" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${addToCartByCustomerPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Add To Cart By Customer");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies">
-        <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
-          <stringProp name="Cookie.value">30</stringProp>
-          <stringProp name="Cookie.domain">${host}</stringProp>
-          <stringProp name="Cookie.path">/</stringProp>
-          <boolProp name="Cookie.secure">false</boolProp>
-          <longProp name="Cookie.expires">0</longProp>
-          <boolProp name="Cookie.path_specified">true</boolProp>
-          <boolProp name="Cookie.domain_specified">true</boolProp>
-        </elementProp>
-        <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
-          <stringProp name="Cookie.value">${form_key}</stringProp>
-          <stringProp name="Cookie.domain">${host}</stringProp>
-          <stringProp name="Cookie.path">${base_path}</stringProp>
-          <boolProp name="Cookie.secure">false</boolProp>
-          <longProp name="Cookie.expires">0</longProp>
-          <boolProp name="Cookie.path_specified">true</boolProp>
-          <boolProp name="Cookie.domain_specified">true</boolProp>
-        </elementProp>
-      </collectionProp>
-      <boolProp name="CookieManager.clearEachIteration">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
-        <stringProp name="BeanShellSampler.query">
-import java.util.Random;
-
-Random random = new Random();
-if (${seedForRandom} &gt; 0) {
-    random.setSeed(${seedForRandom} + ${__threadNum});
-}
-
-vars.putObject("randomIntGenerator", random);
-        </stringProp>
-        <stringProp name="BeanShellSampler.filename"/>
-        <stringProp name="BeanShellSampler.parameters"/>
-        <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-      </BeanShellSampler>
-      <hashTree/>
-    
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
-        <stringProp name="BeanShellSampler.query">
-vars.put("totalProductsAdded", "0");
-        </stringProp>
-        <stringProp name="BeanShellSampler.filename"/>
-        <stringProp name="BeanShellSampler.parameters"/>
-        <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-      </BeanShellSampler>
-      <hashTree/>
-    
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Category Data" enabled="true">
-        <stringProp name="BeanShellSampler.query">
-import java.util.Random;
-
-Random random = vars.getObject("randomIntGenerator");
-number = random.nextInt(props.get("category_url_keys_list").size());
-
-vars.put("category_url_key", props.get("category_url_keys_list").get(number));
-vars.put("category_name", props.get("category_names_list").get(number));
-        </stringProp>
-        <stringProp name="BeanShellSampler.filename"/>
-        <stringProp name="BeanShellSampler.parameters"/>
-        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/extract_category_setup.jmx</stringProp></BeanShellSampler>
-      <hashTree/>
-    
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_customer_email.jmx</stringProp>
-      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
-
-String siterator = vars.get("customer_emails_index");
-int iterator;
-if(siterator == null){
-    iterator = 0;
-    vars.put("customer_emails_index", "0");
-} else {
-    iterator = Integer.parseInt(siterator);
-    iterator ++;
-    vars.put("customer_emails_index", iterator.toString());
-}
-
-emails_list = props.get("customer_emails_list");
-
-threadsNumber = ctx.getThreadGroup().getNumThreads();
-emailsCount = emails_list.size();
-if (threadsNumber &gt; emailsCount) {
-    log.error(" There are not enough customers for this scenario.");
-} else {
-    clusterLength = Math.round(emailsCount / threadsNumber);
-    threadNum = ctx.getThreadNum();
-    emails_index = clusterLength * threadNum + iterator;
-    maxLimit = clusterLength * (threadNum + 1);
-    if (emails_index &gt;= maxLimit) {
-        iterator = 0;
-        emails_index = clusterLength * threadNum + iterator;
-        vars.put("customer_emails_index", iterator.toString());
-    }
-}
-vars.put("customer_email", emails_list.get(emails_index));</stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    </BeanShellSampler>
-    <hashTree/>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${customer_email}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${customer_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="send" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">send</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">addressId</stringProp>
-        <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">addressId</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="sections" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sections</stringProp>
-          </elementProp>
-          <elementProp name="update_section_id" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">false</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">update_section_id</stringProp>
-          </elementProp>
-          <elementProp name="_" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    </HTTPSamplerProxy>
-    <hashTree/>
-  
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
+            <elementProp name="bundle_options[bundle_options][1][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][position]</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_id]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][option_id]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][product_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][product_id]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][delete]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">5.00</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_qty]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][position]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_id]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][option_id]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][product_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][product_id]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][delete]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">7.00</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_qty]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][position]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
+            </elementProp>
+          </collectionProp>
         </elementProp>
         <stringProp name="HTTPSampler.domain"/>
         <stringProp name="HTTPSampler.port"/>
@@ -29971,19 +22070,19 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
         <stringProp name="HTTPSampler.response_timeout"/>
         <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
         <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
         <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
         <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
         <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
         <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
         <boolProp name="HTTPSampler.monitor">false</boolProp>
         <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
+      </HTTPSamplerProxy>
       <hashTree>
         <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
           <collectionProp name="Asserion.test_strings">
-            <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
+            <stringProp name="1853918323">{"error":false}</stringProp>
           </collectionProp>
           <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
           <boolProp name="Assertion.assume_success">false</boolProp>
@@ -29991,389 +22090,911 @@ vars.put("customer_email", emails_list.get(emails_index));</stringProp>
         </ResponseAssertion>
         <hashTree/>
       </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">6</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">category_id</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-        <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1191417111">^[0-9]+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">category_id</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Cart" enabled="true">
-      <boolProp name="LoopController.continue_forever">true</boolProp>
-      <stringProp name="LoopController.loops">2</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
-    <hashTree>
-      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
-        <stringProp name="CounterConfig.start">1</stringProp>
-        <stringProp name="CounterConfig.end"/>
-        <stringProp name="CounterConfig.incr">1</stringProp>
-        <stringProp name="CounterConfig.name">_counter</stringProp>
-        <stringProp name="CounterConfig.format"/>
-        <boolProp name="CounterConfig.per_user">true</boolProp>
-        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
-      </CounterConfig>
-      <hashTree/>
-    
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
-      <stringProp name="BeanShellSampler.query">
-import java.util.Random;
-
-Random random = vars.getObject("randomIntGenerator");
-number = random.nextInt(props.get("simple_products_list").size());
-product = props.get("simple_products_list").get(number);
-
-vars.put("product_url_key", product.get("url_key"));
-vars.put("product_id", product.get("id"));
-vars.put("product_name", product.get("title"));
-vars.put("product_uenc", product.get("uenc"));
-vars.put("product_sku", product.get("sku"));
-      </stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
-    <hashTree/>
-  
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
-      <stringProp name="BeanShellSampler.query">
-productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
-productsAdded = productsAdded + 1;
-
-vars.put("totalProductsAdded", String.valueOf(productsAdded));
-      </stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    </BeanShellSampler>
-    <hashTree/>
-  
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                <collectionProp name="Arguments.arguments"/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Save" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="ajax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">ajax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="isAjax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[name]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[name]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[sku]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[sku]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">42</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">111</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[weight]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1.0000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[weight]</stringProp>
+            </elementProp>
+            <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[category_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Full bundle product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[description]</stringProp>
+            </elementProp>
+            <elementProp name="product[short_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[short_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[status]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[status]</stringProp>
+            </elementProp>
+            <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[configurable_variations]</stringProp>
+            </elementProp>
+            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
+            </elementProp>
+            <elementProp name="product[image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[image]</stringProp>
+            </elementProp>
+            <elementProp name="product[small_image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[small_image]</stringProp>
+            </elementProp>
+            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[thumbnail]</stringProp>
+            </elementProp>
+            <elementProp name="product[url_key]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[url_key]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_title]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[website_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_price]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_from_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_to_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[cost]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[cost]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">32000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">90</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">101</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">10000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
             </elementProp>
-            <stringProp name="HTTPSampler.domain"/>
-            <stringProp name="HTTPSampler.port"/>
-            <stringProp name="HTTPSampler.connect_timeout"/>
-            <stringProp name="HTTPSampler.response_timeout"/>
-            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-            <stringProp name="HTTPSampler.contentEncoding"/>
-            <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-            <boolProp name="HTTPSampler.monitor">false</boolProp>
-            <stringProp name="HTTPSampler.embedded_url_re"/>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
-        <hashTree>
-            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                <collectionProp name="Asserion.test_strings">
-                    <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
-                </collectionProp>
-                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                <boolProp name="Assertion.assume_success">false</boolProp>
-                <intProp name="Assertion.test_type">2</intProp>
-            </ResponseAssertion>
-            <hashTree/>
-        </hashTree>
-    
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="product" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${product_id}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">product</stringProp>
-          </elementProp>
-          <elementProp name="related_product" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">related_product</stringProp>
-          </elementProp>
-          <elementProp name="qty" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">qty</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-      <collectionProp name="HeaderManager.headers">
-        <elementProp name="" elementType="Header">
-          <stringProp name="Header.name">X-Requested-With</stringProp>
-          <stringProp name="Header.value">XMLHttpRequest</stringProp>
-        </elementProp>
-      </collectionProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
-    <hashTree/>
-  </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="sections" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">cart,messages</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sections</stringProp>
-          </elementProp>
-          <elementProp name="update_section_id" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">update_section_id</stringProp>
-          </elementProp>
-          <elementProp name="_" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="210217247">You added ${product_name} to your shopping cart.</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2057973164">This product is out of stock.</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">6</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    
-    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-      <collectionProp name="HeaderManager.headers">
-        <elementProp name="" elementType="Header">
-          <stringProp name="Header.name">X-Requested-With</stringProp>
-          <stringProp name="Header.value">XMLHttpRequest</stringProp>
-        </elementProp>
-      </collectionProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
-    <hashTree/>
-  </hashTree>
-  </hashTree>
-  
-    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Cart" enabled="true">
-      <boolProp name="LoopController.continue_forever">true</boolProp>
-      <stringProp name="LoopController.loops">1</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
-    <hashTree>
-      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
-        <stringProp name="CounterConfig.start">1</stringProp>
-        <stringProp name="CounterConfig.end"/>
-        <stringProp name="CounterConfig.incr">1</stringProp>
-        <stringProp name="CounterConfig.name">_counter</stringProp>
-        <stringProp name="CounterConfig.format"/>
-        <boolProp name="CounterConfig.per_user">true</boolProp>
-        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
-      </CounterConfig>
-      <hashTree/>
-    
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
-      <stringProp name="BeanShellSampler.query">
-import java.util.Random;
-
-Random random = vars.getObject("randomIntGenerator");
-number = random.nextInt(props.get("configurable_products_list").size());
-product = props.get("configurable_products_list").get(number);
-
-vars.put("product_url_key", product.get("url_key"));
-vars.put("product_id", product.get("id"));
-vars.put("product_name", product.get("title"));
-vars.put("product_uenc", product.get("uenc"));
-vars.put("product_sku", product.get("sku"));
-      </stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
-    <hashTree/>
-  
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
-      <stringProp name="BeanShellSampler.query">
-productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
-productsAdded = productsAdded + 1;
-
-vars.put("totalProductsAdded", String.valueOf(productsAdded));
-      </stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    </BeanShellSampler>
-    <hashTree/>
-  
-        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-                <collectionProp name="Arguments.arguments"/>
+            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+            </elementProp>
+            <elementProp name="product[page_layout]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[page_layout]</stringProp>
+            </elementProp>
+            <elementProp name="product[options_container]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">container2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options_container]</stringProp>
+            </elementProp>
+            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
+            </elementProp>
+            <elementProp name="product[shipment_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[shipment_type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">option title one</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][title]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][option_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">select</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][required]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][required]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][position]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][option_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][product_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][product_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">25</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_qty]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][position]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][option_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][product_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][product_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">10.99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_qty]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][position]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">option title two</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][title]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][option_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">select</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][required]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][required]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][position]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][option_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][product_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][product_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
             </elementProp>
-            <stringProp name="HTTPSampler.domain"/>
-            <stringProp name="HTTPSampler.port"/>
-            <stringProp name="HTTPSampler.connect_timeout"/>
-            <stringProp name="HTTPSampler.response_timeout"/>
-            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-            <stringProp name="HTTPSampler.contentEncoding"/>
-            <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-            <boolProp name="HTTPSampler.monitor">false</boolProp>
-            <stringProp name="HTTPSampler.embedded_url_re"/>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
-        <hashTree>
-            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-                <collectionProp name="Asserion.test_strings">
-                    <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
-                </collectionProp>
-                <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-                <boolProp name="Assertion.assume_success">false</boolProp>
-                <intProp name="Assertion.test_type">2</intProp>
-            </ResponseAssertion>
-            <hashTree/>
-        </hashTree>
-    
-    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="SetUp - Get Configurable Product Options" enabled="true">
-      <boolProp name="LoopController.continue_forever">true</boolProp>
-      <stringProp name="LoopController.loops">1</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/get_configurable_product_options.jmx</stringProp></LoopController>
-    <hashTree>
-      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-        <collectionProp name="HeaderManager.headers">
-          <elementProp name="" elementType="Header">
-            <stringProp name="Header.name">Content-Type</stringProp>
-            <stringProp name="Header.value">application/json</stringProp>
-          </elementProp>
-          <elementProp name="" elementType="Header">
-            <stringProp name="Header.name">Accept</stringProp>
-            <stringProp name="Header.value">*/*</stringProp>
-          </elementProp>
-        </collectionProp>
-      </HeaderManager>
-      <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
-        <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="" elementType="HTTPArgument">
-              <boolProp name="HTTPArgument.always_encode">false</boolProp>
-              <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">5.00</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_qty]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][position]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][option_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][option_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][product_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][product_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">7.00</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_qty]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][position]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
               <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
             </elementProp>
           </collectionProp>
         </elementProp>
@@ -30383,7 +23004,7 @@ vars.put("totalProductsAdded", String.valueOf(productsAdded));
         <stringProp name="HTTPSampler.response_timeout"/>
         <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
         <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/bundle/back/edit/active_tab/product-details/</stringProp>
         <stringProp name="HTTPSampler.method">POST</stringProp>
         <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
         <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -30393,865 +23014,30 @@ vars.put("totalProductsAdded", String.valueOf(productsAdded));
         <stringProp name="HTTPSampler.embedded_url_re"/>
       </HTTPSamplerProxy>
       <hashTree>
-        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
-          <stringProp name="VAR">admin_token</stringProp>
-          <stringProp name="JSONPATH">$</stringProp>
-          <stringProp name="DEFAULT"/>
-          <stringProp name="VARIABLE"/>
-          <stringProp name="SUBJECT">BODY</stringProp>
-        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-        <hashTree/>
-        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
           <collectionProp name="Asserion.test_strings">
-            <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
-          </collectionProp>
-          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-          <boolProp name="Assertion.assume_success">false</boolProp>
-          <intProp name="Assertion.test_type">1</intProp>
-          <stringProp name="Assertion.scope">variable</stringProp>
-          <stringProp name="Scope.variable">admin_token</stringProp>
-        </ResponseAssertion>
-        <hashTree/>
-      </hashTree>
-      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-        <collectionProp name="HeaderManager.headers">
-          <elementProp name="" elementType="Header">
-            <stringProp name="Header.name">Authorization</stringProp>
-            <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
-          </elementProp>
-        </collectionProp>
-      </HeaderManager>
-      <hashTree/>
-      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options" enabled="true">
-        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-          <collectionProp name="Arguments.arguments"/>
-        </elementProp>
-        <stringProp name="HTTPSampler.domain"/>
-        <stringProp name="HTTPSampler.port"/>
-        <stringProp name="HTTPSampler.connect_timeout"/>
-        <stringProp name="HTTPSampler.response_timeout"/>
-        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-        <stringProp name="HTTPSampler.contentEncoding"/>
-        <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${product_sku}/options/all</stringProp>
-        <stringProp name="HTTPSampler.method">GET</stringProp>
-        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-        <boolProp name="HTTPSampler.monitor">false</boolProp>
-        <stringProp name="HTTPSampler.embedded_url_re"/>
-      </HTTPSamplerProxy>
-      <hashTree>
-        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="JSON Path Extractor: Extract attribute_ids" enabled="true">
-          <stringProp name="VAR">attribute_ids</stringProp>
-          <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
-          <stringProp name="DEFAULT">NO_VALUE</stringProp>
-          <stringProp name="VARIABLE"/>
-          <stringProp name="SUBJECT">BODY</stringProp>
-        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-        <hashTree/>
-        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="JSON Path Extractor: Extract option_values" enabled="true">
-          <stringProp name="VAR">option_values</stringProp>
-          <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
-          <stringProp name="DEFAULT">NO_VALUE</stringProp>
-          <stringProp name="VARIABLE"/>
-          <stringProp name="SUBJECT">BODY</stringProp>
-        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-        <hashTree/>
-      </hashTree>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="product" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${product_id}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">product</stringProp>
-          </elementProp>
-          <elementProp name="related_product" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">related_product</stringProp>
-          </elementProp>
-          <elementProp name="qty" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">qty</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-        <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
-                <boolProp name="resetInterpreter">false</boolProp>
-                <stringProp name="parameters"/>
-                <stringProp name="filename"/>
-                <stringProp name="script">
-                    try {
-                    attribute_ids = vars.get("attribute_ids");
-                    option_values = vars.get("option_values");
-                    attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
-                    option_values = option_values.replace("[","").replace("]","").replace("\"", "");
-                    attribute_ids_array = attribute_ids.split(",");
-                    option_values_array = option_values.split(",");
-                    args = ctx.getCurrentSampler().getArguments();
-                    it = args.iterator();
-                    while (it.hasNext()) {
-                        argument = it.next();
-                        if (argument.getStringValue().contains("${")) {
-                            args.removeArgument(argument.getName());
-                        }
-                    }
-                    for (int i = 0; i &lt; attribute_ids_array.length; i++) {
-                        ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
-                    }
-                    } catch (Exception e) {
-                        log.error("eror&#x2026;", e);
-                    }
-                </stringProp>
-              <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx</stringProp></BeanShellPreProcessor>
-        <hashTree/>
-    
-    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-      <collectionProp name="HeaderManager.headers">
-        <elementProp name="" elementType="Header">
-          <stringProp name="Header.name">X-Requested-With</stringProp>
-          <stringProp name="Header.value">XMLHttpRequest</stringProp>
-        </elementProp>
-      </collectionProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
-    <hashTree/>
-  </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="sections" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">cart,messages</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sections</stringProp>
-          </elementProp>
-          <elementProp name="update_section_id" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">update_section_id</stringProp>
-          </elementProp>
-          <elementProp name="_" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="210217247">You added ${product_name} to your shopping cart.</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2057973164">This product is out of stock.</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">6</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    
-    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
-      <collectionProp name="HeaderManager.headers">
-        <elementProp name="" elementType="Header">
-          <stringProp name="Header.name">X-Requested-With</stringProp>
-          <stringProp name="Header.value">XMLHttpRequest</stringProp>
-        </elementProp>
-      </collectionProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
-    <hashTree/>
-  </hashTree>
-  </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Import Products" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${importProductsPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Import Products");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
-
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
+            <stringProp name="-583471546">You saved the product</stringProp>
+            <stringProp name="-1534079309">option title one</stringProp>
+            <stringProp name="-1534074215">option title two</stringProp>
+            <stringProp name="1304788671">${simple_product_2_name}</stringProp>
+            <stringProp name="417284990">${simple_product_1_name}</stringProp>
+          </collectionProp>
+
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
         <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
+      </hashTree>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree/>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Create Configurable Product" enabled="true">
   <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
 </GenericController>
-    <hashTree>
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
-      <stringProp name="BeanShellSampler.query">vars.put("entity", "catalog_product");
-String behavior = "${adminImportProductBehavior}";
-vars.put("adminImportBehavior", behavior);
-String filepath = "${files_folder}${adminImportProductFilePath}";
-vars.put("adminImportFilePath", filepath);  </stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/import_products/setup.jmx</stringProp></BeanShellSampler>
-    <hashTree/>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Page" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1723813687">Import Settings</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Validate" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-          <elementProp name="entity" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${entity}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">entity</stringProp>
-          </elementProp>
-          <elementProp name="behavior" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">behavior</stringProp>
-          </elementProp>
-          <elementProp name="validation_strategy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">validation_strategy</stringProp>
-          </elementProp>
-          <elementProp name="allowed_error_count" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">10</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">allowed_error_count</stringProp>
-          </elementProp>
-          <elementProp name="_import_field_separator" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_import_field_separator</stringProp>
-          </elementProp>
-          <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/validate</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
-      <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
-        <collectionProp name="HTTPFileArgs.files">
-          <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
-            <stringProp name="File.path">${adminImportFilePath}</stringProp>
-            <stringProp name="File.paramname">import_file</stringProp>
-            <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import_validate.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="37280142">File is valid! To start import process</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">16</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Start" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-          <elementProp name="entity" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${entity}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">entity</stringProp>
-          </elementProp>
-          <elementProp name="behavior" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">behavior</stringProp>
-          </elementProp>
-          <elementProp name="validation_strategy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">validation_strategy</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-          <elementProp name="allowed_error_count" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">10</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">allowed_error_count</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-          <elementProp name="_import_field_separator" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_import_field_separator</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-          <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/start</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
-      <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
-        <collectionProp name="HTTPFileArgs.files">
-          <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
-            <stringProp name="File.path">${adminImportFilePath}</stringProp>
-            <stringProp name="File.paramname">import_file</stringProp>
-            <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import_save.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1731221824">Import successfully done</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">16</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Import Customers" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${importCustomersPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Import Customers");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
-      <stringProp name="BeanShellSampler.query">vars.put("entity", "customer");
-String behavior = "${adminImportCustomerBehavior}";
-vars.put("adminImportBehavior", behavior);
-String filepath = "${files_folder}${adminImportCustomerFilePath}";
-vars.put("adminImportFilePath", filepath);  </stringProp>
-      <stringProp name="BeanShellSampler.filename"/>
-      <stringProp name="BeanShellSampler.parameters"/>
-      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/import_customers/setup.jmx</stringProp></BeanShellSampler>
-    <hashTree/>
-  
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
-
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
-        <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-        </collectionProp>
+        <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -31259,25 +23045,28 @@ vars.put("adminImportFilePath", filepath);  </stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree/>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/open_catalog_grid.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Page" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1509986340">records found</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
       </elementProp>
@@ -31287,7 +23076,7 @@ vars.put("adminImportFilePath", filepath);  </stringProp>
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/${attribute_set_id}/type/configurable/</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -31295,11 +23084,11 @@ vars.put("adminImportFilePath", filepath);  </stringProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/new_configurable.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="1723813687">Import Settings</stringProp>
+          <stringProp name="-144461265">New Product</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
@@ -31308,368 +23097,506 @@ vars.put("adminImportFilePath", filepath);  </stringProp>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Validate" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Validate" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
+          <elementProp name="ajax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">ajax</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="isAjax" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
+          </elementProp>
+          <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
           <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
             <stringProp name="Argument.value">${admin_form_key}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
             <stringProp name="Argument.name">form_key</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="entity" elementType="HTTPArgument">
+          <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${entity}</stringProp>
+            <stringProp name="Argument.value">${attribute_set_id}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">entity</stringProp>
+            <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="behavior" elementType="HTTPArgument">
+          <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">behavior</stringProp>
+            <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="validation_strategy" elementType="HTTPArgument">
+          <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
+            <stringProp name="Argument.value">${attribute_set_id}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">validation_strategy</stringProp>
+            <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="allowed_error_count" elementType="HTTPArgument">
+          <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">10</stringProp>
+            <stringProp name="Argument.value">4</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">allowed_error_count</stringProp>
+            <stringProp name="Argument.name">product[category_ids][0]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="_import_field_separator" elementType="HTTPArgument">
+          <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_import_field_separator</stringProp>
+            <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
+          <elementProp name="product[description]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
+            <stringProp name="Argument.name">product[description]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/validate</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
-      <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
-        <collectionProp name="HTTPFileArgs.files">
-          <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
-            <stringProp name="File.path">${adminImportFilePath}</stringProp>
-            <stringProp name="File.paramname">import_file</stringProp>
-            <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
+          <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">0</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[gift_message_available]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import_validate.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="37280142">File is valid! To start import process</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">16</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Start" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
+          <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
+            <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="entity" elementType="HTTPArgument">
+          <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${entity}</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">entity</stringProp>
+            <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="behavior" elementType="HTTPArgument">
+          <elementProp name="product[image]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">behavior</stringProp>
+            <stringProp name="Argument.name">product[image]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="validation_strategy" elementType="HTTPArgument">
+          <elementProp name="product[is_returnable]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
+            <stringProp name="Argument.value">2</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">validation_strategy</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
+            <stringProp name="Argument.name">product[is_returnable]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="allowed_error_count" elementType="HTTPArgument">
+          <elementProp name="product[meta_description]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">10</stringProp>
+            <stringProp name="Argument.value">${configurable_sku} - Meta Description</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">allowed_error_count</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
+            <stringProp name="Argument.name">product[meta_description]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="_import_field_separator" elementType="HTTPArgument">
+          <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${configurable_sku} - Meta Keyword</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_import_field_separator</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
+            <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
+          <elementProp name="product[meta_title]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${configurable_sku} - Meta Title</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
+            <stringProp name="Argument.name">product[meta_title]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/start</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
-      <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
-        <collectionProp name="HTTPFileArgs.files">
-          <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
-            <stringProp name="File.path">${adminImportFilePath}</stringProp>
-            <stringProp name="File.paramname">import_file</stringProp>
-            <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
+          <elementProp name="product[name]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${configurable_sku}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[name]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-        </collectionProp>
-      </elementProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/import_save.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1731221824">Import successfully done</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">16</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  </hashTree>
-  </hashTree>
-
-  
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Export Products" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${exportProductsPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
-    <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
-        <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Export Products");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
-        <hashTree/>
-    
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
-
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
-        <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
-        <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
+          <elementProp name="product[options_container]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">container2</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[options_container]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[price]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${price_new}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[price]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1000</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[short_description]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[short_description]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[sku]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${configurable_sku}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[sku]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[small_image]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[small_image]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[special_price]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${special_price_new}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[special_price]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[status]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[status]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">0</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">0</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">0</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">0</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">10000</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">0</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">2</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[thumbnail]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
+            <stringProp name="Argument.name">product[thumbnail]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
+          <elementProp name="product[url_key]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.name">product[url_key]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
+          <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
+            <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
+          <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
+            <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[visibility]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">4</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[visibility]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[website_ids][1]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
+          </elementProp>
+          <elementProp name="links[related][0][id]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${related_product_id}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[related][0][id]</stringProp>
+          </elementProp>
+          <elementProp name="links[related][0][position]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[related][0][position]</stringProp>
+          </elementProp>
+          <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${related_product_id}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
+          </elementProp>
+          <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
+          </elementProp>
+          <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">${related_product_id}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
+          </elementProp>
+          <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
+            <boolProp name="HTTPArgument.always_encode">true</boolProp>
+            <stringProp name="Argument.value">1</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -31679,610 +23606,7787 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/${attribute_set_id}/</stringProp>
       <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree/>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Export Page" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/export/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/export.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/configurable_validate.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="1723813687">Export Settings</stringProp>
+          <stringProp name="1853918323">{"error":false}</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
         <intProp name="Assertion.test_type">2</intProp>
       </ResponseAssertion>
       <hashTree/>
+    
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Prepare Configurable Data" enabled="true">
+            <stringProp name="scriptLanguage">javascript</stringProp>
+            <stringProp name="parameters"/>
+            <stringProp name="filename"/>
+            <stringProp name="cacheKey"/>
+            <stringProp name="script">
+attributes = vars.getObject("product_attributes");
+
+for (i in attributes) {
+    var attribute = attributes[i];
+    sampler.addArgument("attribute_codes[" + i + "]", attribute.code);
+    sampler.addArgument("attributes[" + i + "]", attribute.id);
+    sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value);
+    addConfigurableAttributeData(attribute);
+}
+
+addConfigurableMatrix(attributes);
+
+function addConfigurableAttributeData(attribute) {
+    var attributeId = attribute.id;
+
+    sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
+    sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code);
+    sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label);
+    sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0);
+    attribute.options.forEach(function (option, index) {
+        sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index);
+        sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value);
+    });
+}
+
+/**
+ * Build 4 simple products for Configurable
+ */
+function addConfigurableMatrix(attributes) {
+
+    var attribute1 = attributes[0],
+        attribute2 = attributes[1],
+        productIndex = 1,
+        products = [];
+    var variationNames = [];
+    attribute1.options.forEach(function (option1) {
+        attribute2.options.forEach(function (option2) {
+            var productAttributes = {},
+                namePart = option1.label + "+" + option2.label,
+                variationKey = option1.value + "-" + option2.value;
+            productAttributes[attribute1.code] = option1.value;
+            productAttributes[attribute2.code] = option2.value;
+
+            variationNames.push(namePart + " - " + vars.get("configurable_sku"));
+            var product = {
+                "id": null,
+                "name": namePart + " - " + vars.get("configurable_sku"),
+                "sku": namePart + " - " + vars.get("configurable_sku"),
+                "status": 1,
+                "price": "100",
+                "price_currency": "$",
+                "price_string": "$100",
+                "weight": "6",
+                "qty": "50",
+                "variationKey": variationKey,
+                "configurable_attribute": JSON.stringify(productAttributes),
+                "thumbnail_image": "",
+                "media_gallery": {"images": {}},
+                "image": [],
+                "was_changed": true,
+                "canEdit": 1,
+                "newProduct": 1,
+                "record_id": productIndex
+            };
+            productIndex++;
+            products.push(product);
+        });
+    });
+
+    sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products));
+    vars.putObject("configurable_variations_assertion", variationNames);
+}
+            </stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Export Products" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Save" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
+          <elementProp name="ajax" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
+            <stringProp name="Argument.value">true</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">ajax</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
           </elementProp>
-          <elementProp name="attribute_code" elementType="HTTPArgument">
+          <elementProp name="isAjax" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">attribute_code</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">true</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">isAjax</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
           </elementProp>
-          <elementProp name="export_filter[allow_message][]" elementType="HTTPArgument">
+          <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[allow_message][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[allow_open_amount]" elementType="HTTPArgument">
+          <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[allow_open_amount]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[category_ids]" elementType="HTTPArgument">
+          <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[category_ids]</stringProp>
-            <stringProp name="Argument.value">24,25,26,27,28,29,30</stringProp>
+            <stringProp name="Argument.value">${attribute_set_id}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[configurable_variations]" elementType="HTTPArgument">
+          <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[configurable_variations]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[cost][]" elementType="HTTPArgument">
+          <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[cost][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${attribute_set_id}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[country_of_manufacture]" elementType="HTTPArgument">
+          <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[country_of_manufacture]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">4</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[category_ids][0]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[created_at]" elementType="HTTPArgument">
+          <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[created_at]</stringProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[custom_design]" elementType="HTTPArgument">
+          <elementProp name="product[description]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[custom_design]</stringProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[description]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[custom_design_from][]" elementType="HTTPArgument">
+          <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[custom_design_from][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">0</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[gift_message_available]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[custom_design_to][]" elementType="HTTPArgument">
+          <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[custom_design_to][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[custom_layout_update]" elementType="HTTPArgument">
+          <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[custom_layout_update]</stringProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[description]" elementType="HTTPArgument">
+          <elementProp name="product[image]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[description]</stringProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[image]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[email_template]" elementType="HTTPArgument">
+          <elementProp name="product[is_returnable]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[email_template]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">2</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[is_returnable]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[gallery]" elementType="HTTPArgument">
+          <elementProp name="product[meta_description]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[gallery]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${configurable_sku} - Meta Description</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[meta_description]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[gift_message_available]" elementType="HTTPArgument">
+          <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[gift_message_available]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${configurable_sku} - Meta Keyword</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[gift_wrapping_available]" elementType="HTTPArgument">
+          <elementProp name="product[meta_title]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[gift_wrapping_available]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${configurable_sku} - Meta Title</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[meta_title]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[gift_wrapping_price][]" elementType="HTTPArgument">
+          <elementProp name="product[name]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[gift_wrapping_price][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${configurable_sku}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[name]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[group_price][]" elementType="HTTPArgument">
+          <elementProp name="product[options_container]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[group_price][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">container2</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[options_container]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[has_options]" elementType="HTTPArgument">
+          <elementProp name="product[price]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[has_options]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${price_new}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[price]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[image]" elementType="HTTPArgument">
+          <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[image]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[image_label]" elementType="HTTPArgument">
+          <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[image_label]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[is_redeemable][]" elementType="HTTPArgument">
+          <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[is_redeemable][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1000</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[is_returnable]" elementType="HTTPArgument">
+          <elementProp name="product[short_description]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[is_returnable]</stringProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[short_description]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[lifetime][]" elementType="HTTPArgument">
+          <elementProp name="product[sku]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[lifetime][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${configurable_sku}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[sku]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[links_exist][]" elementType="HTTPArgument">
+          <elementProp name="product[small_image]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[links_exist][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[small_image]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[links_purchased_separately][]" elementType="HTTPArgument">
+          <elementProp name="product[special_price]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[links_purchased_separately][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${special_price_new}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[special_price]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[links_title]" elementType="HTTPArgument">
+          <elementProp name="product[status]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[links_title]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[status]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[media_gallery]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[media_gallery]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">0</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[meta_description]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[meta_description]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[meta_keyword]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[meta_keyword]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">0</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[meta_title]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[meta_title]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">0</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[minimal_price][]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[minimal_price][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">0</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[msrp][]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[msrp][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[msrp_display_actual_price_type]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[msrp_display_actual_price_type]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">10000</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[name]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[name]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">0</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[news_from_date][]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[news_from_date][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[news_to_date][]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[news_to_date][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[old_id][]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[old_id][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[open_amount_max][]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[open_amount_max][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[open_amount_min][]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[open_amount_min][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[options_container]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[options_container]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[page_layout]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[page_layout]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[price][]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[price][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[price_type][]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[price_type][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[price_view]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[price_view]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[quantity_and_stock_status]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[quantity_and_stock_status]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[related_tgtr_position_behavior][]" elementType="HTTPArgument">
+          <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[related_tgtr_position_behavior][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[related_tgtr_position_limit][]" elementType="HTTPArgument">
+          <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[related_tgtr_position_limit][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">2</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[required_options]" elementType="HTTPArgument">
+          <elementProp name="product[thumbnail]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[required_options]</stringProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[thumbnail]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[samples_title]" elementType="HTTPArgument">
+          <elementProp name="product[url_key]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[samples_title]</stringProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[url_key]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[shipment_type][]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[shipment_type][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          </elementProp>
-          <elementProp name="export_filter[short_description]" elementType="HTTPArgument">
+          <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[short_description]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[sku]" elementType="HTTPArgument">
+          <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[sku]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[sku_type][]" elementType="HTTPArgument">
+          <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[sku_type][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[small_image]" elementType="HTTPArgument">
+          <elementProp name="product[visibility]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[small_image]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">4</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[visibility]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[small_image_label]" elementType="HTTPArgument">
+          <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[small_image_label]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">product[website_ids][1]</stringProp>
+            <stringProp name="Argument.desc">true</stringProp>
           </elementProp>
-          <elementProp name="export_filter[special_from_date][]" elementType="HTTPArgument">
+          <elementProp name="links[related][0][id]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[special_from_date][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${related_product_id}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[related][0][id]</stringProp>
           </elementProp>
-          <elementProp name="export_filter[special_price][]" elementType="HTTPArgument">
+          <elementProp name="links[related][0][position]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[special_price][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[related][0][position]</stringProp>
           </elementProp>
-          <elementProp name="export_filter[special_to_date][]" elementType="HTTPArgument">
+          <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[special_to_date][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${related_product_id}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
           </elementProp>
-          <elementProp name="export_filter[status]" elementType="HTTPArgument">
+          <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[status]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
           </elementProp>
-          <elementProp name="export_filter[tax_class_id]" elementType="HTTPArgument">
+          <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[tax_class_id]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${related_product_id}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
           </elementProp>
-          <elementProp name="export_filter[thumbnail]" elementType="HTTPArgument">
+          <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[thumbnail]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
           </elementProp>
-          <elementProp name="export_filter[thumbnail_label]" elementType="HTTPArgument">
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/${attribute_set_id}/type/configurable/back/edit/active_tab/product-details/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/configurable_save.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-583471546">You saved the product</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert Variation" enabled="true">
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="cacheKey"/>
+        <stringProp name="script">
+var configurableVariations = vars.getObject("configurable_variations_assertion"),
+response = SampleResult.getResponseDataAsString();
+
+configurableVariations.forEach(function (variation) {
+    if (response.indexOf(variation) == -1) {
+        AssertionResult.setFailureMessage("Cannot find variation \"" + variation + "\"");
+        AssertionResult.setFailure(true);
+    }
+});
+</stringProp>
+      </JSR223Assertion>
+      <hashTree/>
+    
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Prepare Configurable Data" enabled="true">
+            <stringProp name="scriptLanguage">javascript</stringProp>
+            <stringProp name="parameters"/>
+            <stringProp name="filename"/>
+            <stringProp name="cacheKey"/>
+            <stringProp name="script">
+attributes = vars.getObject("product_attributes");
+
+for (i in attributes) {
+    var attribute = attributes[i];
+    sampler.addArgument("attribute_codes[" + i + "]", attribute.code);
+    sampler.addArgument("attributes[" + i + "]", attribute.id);
+    sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value);
+    addConfigurableAttributeData(attribute);
+}
+
+addConfigurableMatrix(attributes);
+
+function addConfigurableAttributeData(attribute) {
+    var attributeId = attribute.id;
+
+    sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
+    sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code);
+    sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label);
+    sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0);
+    attribute.options.forEach(function (option, index) {
+        sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index);
+        sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value);
+    });
+}
+
+/**
+ * Build 4 simple products for Configurable
+ */
+function addConfigurableMatrix(attributes) {
+
+    var attribute1 = attributes[0],
+        attribute2 = attributes[1],
+        productIndex = 1,
+        products = [];
+    var variationNames = [];
+    attribute1.options.forEach(function (option1) {
+        attribute2.options.forEach(function (option2) {
+            var productAttributes = {},
+                namePart = option1.label + "+" + option2.label,
+                variationKey = option1.value + "-" + option2.value;
+            productAttributes[attribute1.code] = option1.value;
+            productAttributes[attribute2.code] = option2.value;
+
+            variationNames.push(namePart + " - " + vars.get("configurable_sku"));
+            var product = {
+                "id": null,
+                "name": namePart + " - " + vars.get("configurable_sku"),
+                "sku": namePart + " - " + vars.get("configurable_sku"),
+                "status": 1,
+                "price": "100",
+                "price_currency": "$",
+                "price_string": "$100",
+                "weight": "6",
+                "qty": "50",
+                "variationKey": variationKey,
+                "configurable_attribute": JSON.stringify(productAttributes),
+                "thumbnail_image": "",
+                "media_gallery": {"images": {}},
+                "image": [],
+                "was_changed": true,
+                "canEdit": 1,
+                "newProduct": 1,
+                "record_id": productIndex
+            };
+            productIndex++;
+            products.push(product);
+        });
+    });
+
+    sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products));
+    vars.putObject("configurable_variations_assertion", variationNames);
+}
+            </stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Downloadable Product" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/create_downloadable_product.jmx</stringProp>
+</TestFragmentController>
+    <hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="1509986340">records found</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/downloadable/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-144461265">New Product</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Original File" enabled="true">
+        <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
+          <collectionProp name="HTTPFileArgs.files">
+            <elementProp name="${files_folder}downloadable_original.txt" elementType="HTTPFileArg">
+              <stringProp name="File.path">${files_folder}downloadable_original.txt</stringProp>
+              <stringProp name="File.paramname">links</stringProp>
+              <stringProp name="File.mimetype">text/plain</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/links/?isAjax=true</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract original file" enabled="true">
+          <stringProp name="VAR">original_file</stringProp>
+          <stringProp name="JSONPATH">$.file</stringProp>
+          <stringProp name="DEFAULT"/>
+          <stringProp name="VARIABLE"/>
+          <stringProp name="SUBJECT">BODY</stringProp>
+        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Sample File" enabled="true">
+        <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
+          <collectionProp name="HTTPFileArgs.files">
+            <elementProp name="${files_folder}downloadable_sample.txt" elementType="HTTPFileArg">
+              <stringProp name="File.path">${files_folder}downloadable_sample.txt</stringProp>
+              <stringProp name="File.paramname">samples</stringProp>
+              <stringProp name="File.mimetype">text/plain</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/samples/?isAjax=true</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract sample file" enabled="true">
+          <stringProp name="VAR">sample_file</stringProp>
+          <stringProp name="JSONPATH">$.file</stringProp>
+          <stringProp name="DEFAULT"/>
+          <stringProp name="VARIABLE"/>
+          <stringProp name="SUBJECT">BODY</stringProp>
+        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Validate" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="ajax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">ajax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="isAjax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[name]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[name]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[sku]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[sku]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">123</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">111</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[weight]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1.0000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[weight]</stringProp>
+            </elementProp>
+            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[category_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[description]</stringProp>
+            </elementProp>
+            <elementProp name="product[short_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[short_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[status]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[status]</stringProp>
+            </elementProp>
+            <elementProp name="product[image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[image]</stringProp>
+            </elementProp>
+            <elementProp name="product[small_image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[small_image]</stringProp>
+            </elementProp>
+            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[thumbnail]</stringProp>
+            </elementProp>
+            <elementProp name="product[url_key]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[url_key]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_title]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[website_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_price]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_from_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_to_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[cost]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[cost]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">32000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">90</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">101</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">10000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+            </elementProp>
+            <elementProp name="product[page_layout]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[page_layout]</stringProp>
+            </elementProp>
+            <elementProp name="product[options_container]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">container2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options_container]</stringProp>
+            </elementProp>
+            <elementProp name="is_downloadable" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">on</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">is_downloadable</stringProp>
+            </elementProp>
+            <elementProp name="product[links_title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Links</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[links_title]</stringProp>
+            </elementProp>
+            <elementProp name="product[links_purchased_separately]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[links_purchased_separately]</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${original_file}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">downloadable_original.txt</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">13</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">new</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">120</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">file</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Original Link</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">file</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${sample_file}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">14</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">new</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Sample Link</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">file</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">4</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[configurable_variation]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/type/downloadable/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="1853918323">{"error":false}</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Save" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="ajax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">ajax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="isAjax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[name]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[name]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[sku]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[sku]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">123</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">111</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[weight]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1.0000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[weight]</stringProp>
+            </elementProp>
+            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[category_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[description]</stringProp>
+            </elementProp>
+            <elementProp name="product[short_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[short_description]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[status]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[status]</stringProp>
+            </elementProp>
+            <elementProp name="product[image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[image]</stringProp>
+            </elementProp>
+            <elementProp name="product[small_image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[small_image]</stringProp>
+            </elementProp>
+            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[thumbnail]</stringProp>
+            </elementProp>
+            <elementProp name="product[url_key]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[url_key]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_title]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[website_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_price]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_from_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_to_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[cost]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[cost]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">32000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">90</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">101</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">10000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+            </elementProp>
+            <elementProp name="product[page_layout]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[page_layout]</stringProp>
+            </elementProp>
+            <elementProp name="product[options_container]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">container2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options_container]</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${original_file}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">downloadable_original.txt</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">13</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">new</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">120</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">file</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Original Link</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">file</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${sample_file}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">14</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">new</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Sample Link</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">file</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">4</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[configurable_variation]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/downloadable/back/edit/active_tab/product-details/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-583471546">You saved the product</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-1600986843">violation</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">6</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+    </hashTree>
+  
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Simple Product" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_product/create_simple_product.jmx</stringProp>
+</TestFragmentController>
+    <hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="1509986340">records found</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/simple/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-144461265">New Product</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Validate" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="ajax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">ajax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="isAjax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[name]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[name]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[sku]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[sku]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">123</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">111</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[weight]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1.0000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[weight]</stringProp>
+            </elementProp>
+            <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[category_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Full simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[description]</stringProp>
+            </elementProp>
+            <elementProp name="product[short_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[short_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[status]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[status]</stringProp>
+            </elementProp>
+            <elementProp name="product[image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[image]</stringProp>
+            </elementProp>
+            <elementProp name="product[small_image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[small_image]</stringProp>
+            </elementProp>
+            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[thumbnail]</stringProp>
+            </elementProp>
+            <elementProp name="product[url_key]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[url_key]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_title]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[website_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_price]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_from_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_to_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[cost]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[cost]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">32000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">90</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">101</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">10000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+            </elementProp>
+            <elementProp name="product[page_layout]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[page_layout]</stringProp>
+            </elementProp>
+            <elementProp name="product[options_container]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">container2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options_container]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">select</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">drop_down</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Product Option Title One</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][title]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">drop_down</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">200</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">fixed</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">sku-one</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Row Title</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">250</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">text</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">field</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][price]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">fixed</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">sku-two</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][sku]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Field Title</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][title]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">field</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">4</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[configurable_variation]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="1853918323">{"error":false}</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Save" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="ajax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">ajax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="isAjax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[name]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[name]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[sku]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[sku]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">123</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">111</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[weight]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1.0000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[weight]</stringProp>
+            </elementProp>
+            <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[category_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[description]</stringProp>
+            </elementProp>
+            <elementProp name="product[short_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[short_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[status]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[status]</stringProp>
+            </elementProp>
+            <elementProp name="product[image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[image]</stringProp>
+            </elementProp>
+            <elementProp name="product[small_image]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[small_image]</stringProp>
+            </elementProp>
+            <elementProp name="product[thumbnail]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[thumbnail]</stringProp>
+            </elementProp>
+            <elementProp name="product[url_key]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[url_key]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_title]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+            </elementProp>
+            <elementProp name="product[meta_description]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[meta_description]</stringProp>
+            </elementProp>
+            <elementProp name="product[website_ids][]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[website_ids][]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_price]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_from_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_from_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[special_to_date]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[special_to_date]</stringProp>
+            </elementProp>
+            <elementProp name="product[cost]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[cost]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">32000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">90</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">101</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">99</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">10000</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+            </elementProp>
+            <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_from]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_design_to]</stringProp>
+            </elementProp>
+            <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+            </elementProp>
+            <elementProp name="product[page_layout]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[page_layout]</stringProp>
+            </elementProp>
+            <elementProp name="product[options_container]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">container2</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options_container]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">select</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">drop_down</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Product Option Title One</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][title]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">drop_down</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][type]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">200</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">fixed</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">sku-one</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Row Title</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
+              <stringProp name="Argument.desc">false</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">250</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">text</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">field</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][price]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">500</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][price]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">fixed</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">sku-two</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][sku]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][title]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Field Title</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][title]</stringProp>
+            </elementProp>
+            <elementProp name="product[options][2][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">field</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[options][2][type]</stringProp>
+            </elementProp>
+            <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">4</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">product[configurable_variation]</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[related][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[related][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${related_product_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
+            </elementProp>
+            <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/simple/back/edit/active_tab/product-details/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-583471546">You saved the product</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-1600986843">violation</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">6</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Edit Product" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${adminProductEditingPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Admin Edit Product");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
+        <hashTree/>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
+        <hashTree/>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="dummy" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[thumbnail_label]</stringProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
           </elementProp>
-          <elementProp name="export_filter[tier_price][]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[tier_price][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-          </elementProp>
-          <elementProp name="export_filter[updated_at]" elementType="HTTPArgument">
+          <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[updated_at]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
           </elementProp>
-          <elementProp name="export_filter[upsell_tgtr_position_behavior][]" elementType="HTTPArgument">
+          <elementProp name="login[password]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[upsell_tgtr_position_behavior][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
           </elementProp>
-          <elementProp name="export_filter[upsell_tgtr_position_limit][]" elementType="HTTPArgument">
+          <elementProp name="login[username]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[upsell_tgtr_position_limit][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
           </elementProp>
-          <elementProp name="export_filter[url_key]" elementType="HTTPArgument">
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Edit Product" enabled="true"/>
+              <hashTree>
+                <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
+                  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_product/admin_edit_product_updated.jmx</stringProp>
+                  <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
+    import java.util.HashMap;
+    import java.util.Random;
+
+    try {
+    Random random = new Random();
+    if (${seedForRandom} &gt; 0) {
+      random.setSeed(${seedForRandom} + ${__threadNum});
+    }
+    simpleCount = props.get("simple_products_list").size();
+    configCount = props.get("configurable_products_list").size();
+    productCount = 0;
+    if (simpleCount &gt; configCount) {
+    	productCount = configCount;
+    } else {
+    	productCount = simpleCount;
+    }
+    int threadsNumber = ctx.getThreadGroup().getNumThreads();
+    if (threadsNumber == 0) {
+    	threadsNumber = 1;
+    }
+    //Current thread number starts from 0
+    currentThreadNum = ctx.getThreadNum();
+
+    String siterator = vars.get("threadIterator_" + currentThreadNum.toString());
+    iterator = 0;
+    if(siterator == null){
+    	vars.put("threadIterator_" + currentThreadNum.toString() , "0");
+    } else {
+    	iterator = Integer.parseInt(siterator);
+    	iterator ++;
+    	vars.put("threadIterator_" + currentThreadNum.toString() , iterator.toString());
+    }
+
+    //Number of products for one thread
+    productClusterLength = productCount / threadsNumber;
+
+    if (iterator &gt;= productClusterLength) {
+    	vars.put("threadIterator_" + currentThreadNum.toString(), "0");
+    	iterator = 0;
+    }
+
+    //Index of the current product from the cluster
+    i = productClusterLength * currentThreadNum + iterator;
+
+    //ids of simple and configurable products to edit
+    vars.put("simple_product_id", props.get("simple_products_list").get(i).get("id"));
+    vars.put("configurable_product_id", props.get("configurable_products_list").get(i).get("id"));
+
+    //id of related product
+    do {
+    	relatedIndex = random.nextInt(props.get("simple_products_list").size());
+    } while(i == relatedIndex);
+    vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id"));
+    } catch (Exception ex) {
+    log.info("Script execution failed", ex);
+}</stringProp>
+                  <stringProp name="BeanShellSampler.filename"/>
+                  <stringProp name="BeanShellSampler.parameters"/>
+                  <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+                </BeanShellSampler>
+                <hashTree/>
+                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product" enabled="true">
+                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                    <collectionProp name="Arguments.arguments"/>
+                  </elementProp>
+                  <stringProp name="HTTPSampler.domain"/>
+                  <stringProp name="HTTPSampler.port"/>
+                  <stringProp name="HTTPSampler.connect_timeout"/>
+                  <stringProp name="HTTPSampler.response_timeout"/>
+                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+                  <stringProp name="HTTPSampler.contentEncoding"/>
+                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${simple_product_id}/</stringProp>
+                  <stringProp name="HTTPSampler.method">GET</stringProp>
+                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+                  <boolProp name="HTTPSampler.monitor">false</boolProp>
+                  <stringProp name="HTTPSampler.embedded_url_re"/>
+                </HTTPSamplerProxy>
+                <hashTree>
+                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                    <collectionProp name="Asserion.test_strings">
+                      <stringProp name="1355179215">Product</stringProp>
+                    </collectionProp>
+                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                    <boolProp name="Assertion.assume_success">false</boolProp>
+                    <intProp name="Assertion.test_type">16</intProp>
+                  </ResponseAssertion>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">simple_product_name</stringProp>
+                    <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">1</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">simple_product_sku</stringProp>
+                    <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">1</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">simple_product_category_id</stringProp>
+                    <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)".</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">1</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                </hashTree>
+                <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set updated values" enabled="true">
+                  <stringProp name="TestPlan.comments">Passing arguments between threads</stringProp>
+                  <stringProp name="BeanShellSampler.query">//Additional category to be added
+
+    int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
+    if (categoryId &gt; 4) {
+        categoryId = categoryId - 1;
+    } else {
+        categoryId = categoryId + 1;
+    }
+    vars.put("category_additional", categoryId.toString());
+    //New price
+    vars.put("price_new", "9999");
+    //New special price
+    vars.put("special_price_new", "8888");
+    //New quantity
+    vars.put("quantity_new", "100600");</stringProp>
+                  <stringProp name="BeanShellSampler.filename"/>
+                  <stringProp name="BeanShellSampler.parameters"/>
+                  <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+                </BeanShellSampler>
+                <hashTree/>
+                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Validate" enabled="true">
+                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                    <collectionProp name="Arguments.arguments">
+                      <elementProp name="ajax" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">true</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">ajax</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="isAjax" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">true</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">isAjax</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="form_key" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${admin_form_key}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">form_key</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[name]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_name}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[name]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[sku]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_sku}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[sku]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[price]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${price_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[price]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">2</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${quantity_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[weight]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1.0000</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[weight]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[description]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[description]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[status]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[status]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[configurable_variations]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[image]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[image]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[small_image]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[small_image]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[thumbnail]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[thumbnail]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[url_key]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_name}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[url_key]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_title]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_title]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_description]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_description]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[website_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[website_ids][]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_price]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${special_price_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_price]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_from_date]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_from_date]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_to_date]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_to_date]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[cost]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[cost]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${quantity_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${quantity_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">10000</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design_from]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design_to]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[page_layout]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[page_layout]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[options_container]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">container2</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[options_container]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                    </collectionProp>
+                  </elementProp>
+                  <stringProp name="HTTPSampler.domain"/>
+                  <stringProp name="HTTPSampler.port"/>
+                  <stringProp name="HTTPSampler.connect_timeout"/>
+                  <stringProp name="HTTPSampler.response_timeout"/>
+                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+                  <stringProp name="HTTPSampler.contentEncoding"/>
+                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${simple_product_id}/?isAjax=true</stringProp>
+                  <stringProp name="HTTPSampler.method">POST</stringProp>
+                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+                  <boolProp name="HTTPSampler.monitor">false</boolProp>
+                  <stringProp name="HTTPSampler.embedded_url_re"/>
+                </HTTPSamplerProxy>
+                <hashTree>
+                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                    <collectionProp name="Asserion.test_strings">
+                      <stringProp name="1853918323">{"error":false}</stringProp>
+                    </collectionProp>
+                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                    <boolProp name="Assertion.assume_success">false</boolProp>
+                    <intProp name="Assertion.test_type">2</intProp>
+                  </ResponseAssertion>
+                  <hashTree/>
+                </hashTree>
+                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Save" enabled="true">
+                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                    <collectionProp name="Arguments.arguments">
+                      <elementProp name="ajax" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">true</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">ajax</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="isAjax" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">true</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">isAjax</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="form_key" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${admin_form_key}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">form_key</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[name]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_name}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[name]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[sku]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_sku}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[sku]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[price]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${price_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[price]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">2</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${quantity_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[weight]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1.0000</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[weight]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${category_additional}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
+                      </elementProp>
+                      <elementProp name="product[description]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[description]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[status]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[status]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[configurable_variations]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[image]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[image]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[small_image]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[small_image]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[thumbnail]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[thumbnail]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[url_key]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_name}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[url_key]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_title]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_title]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_description]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_description]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[website_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[website_ids][]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_price]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${special_price_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_price]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_from_date]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_from_date]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_to_date]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_to_date]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[cost]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[cost]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${quantity_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${quantity_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">10000</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design_from]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design_to]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[page_layout]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[page_layout]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[options_container]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">container2</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[options_container]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                    </collectionProp>
+                  </elementProp>
+                  <stringProp name="HTTPSampler.domain"/>
+                  <stringProp name="HTTPSampler.port"/>
+                  <stringProp name="HTTPSampler.connect_timeout"/>
+                  <stringProp name="HTTPSampler.response_timeout"/>
+                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+                  <stringProp name="HTTPSampler.contentEncoding"/>
+                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${simple_product_id}/back/edit/active_tab/product-details/</stringProp>
+                  <stringProp name="HTTPSampler.method">POST</stringProp>
+                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+                  <boolProp name="HTTPSampler.monitor">false</boolProp>
+                  <stringProp name="HTTPSampler.embedded_url_re"/>
+                </HTTPSamplerProxy>
+                <hashTree>
+                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                    <collectionProp name="Asserion.test_strings">
+                      <stringProp name="-583471546">You saved the product</stringProp>
+                    </collectionProp>
+                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                    <boolProp name="Assertion.assume_success">false</boolProp>
+                    <intProp name="Assertion.test_type">2</intProp>
+                  </ResponseAssertion>
+                  <hashTree/>
+                </hashTree>
+                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product" enabled="true">
+                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                    <collectionProp name="Arguments.arguments"/>
+                  </elementProp>
+                  <stringProp name="HTTPSampler.domain"/>
+                  <stringProp name="HTTPSampler.port"/>
+                  <stringProp name="HTTPSampler.connect_timeout"/>
+                  <stringProp name="HTTPSampler.response_timeout"/>
+                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+                  <stringProp name="HTTPSampler.contentEncoding"/>
+                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${configurable_product_id}/</stringProp>
+                  <stringProp name="HTTPSampler.method">GET</stringProp>
+                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+                  <boolProp name="HTTPSampler.monitor">false</boolProp>
+                  <stringProp name="HTTPSampler.embedded_url_re"/>
+                </HTTPSamplerProxy>
+                <hashTree>
+                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                    <collectionProp name="Asserion.test_strings">
+                      <stringProp name="1355179215">Product</stringProp>
+                    </collectionProp>
+                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                    <boolProp name="Assertion.assume_success">false</boolProp>
+                    <intProp name="Assertion.test_type">16</intProp>
+                  </ResponseAssertion>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">configurable_product_name</stringProp>
+                    <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">1</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">configurable_product_sku</stringProp>
+                    <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">1</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">configurable_product_category_id</stringProp>
+                    <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)"</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">1</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable attribute id" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">configurable_attribute_id</stringProp>
+                    <stringProp name="RegexExtractor.regex">,"configurable_variation":"([^'"]+)",</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">1</stringProp>
+                    <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable matrix" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">configurable_matrix</stringProp>
+                    <stringProp name="RegexExtractor.regex">"configurable-matrix":(\[.*?\])</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">1</stringProp>
+                    <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract associated products ids" enabled="true">
+                    <stringProp name="VAR">associated_products_ids</stringProp>
+                    <stringProp name="JSONPATH">$.[*].id</stringProp>
+                    <stringProp name="DEFAULT"/>
+                    <stringProp name="VARIABLE">configurable_matrix</stringProp>
+                    <stringProp name="SUBJECT">VAR</stringProp>
+                  </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable product json" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">configurable_product_data</stringProp>
+                    <stringProp name="RegexExtractor.regex">(\{"product":.*?configurable_attributes_data.*?\})\s*&lt;</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">1</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract configurable attributes data" enabled="true">
+                    <stringProp name="VAR">configurable_attributes_data</stringProp>
+                    <stringProp name="JSONPATH">$.product.configurable_attributes_data</stringProp>
+                    <stringProp name="DEFAULT"/>
+                    <stringProp name="VARIABLE">configurable_product_data</stringProp>
+                    <stringProp name="SUBJECT">VAR</stringProp>
+                  </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute ids" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">configurable_attribute_ids</stringProp>
+                    <stringProp name="RegexExtractor.regex">"attribute_id":"(\d+)"</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">-1</stringProp>
+                    <stringProp name="Sample.scope">variable</stringProp>
+                    <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute codes" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">configurable_attribute_codes</stringProp>
+                    <stringProp name="RegexExtractor.regex">"code":"(\w+)"</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">-1</stringProp>
+                    <stringProp name="Sample.scope">variable</stringProp>
+                    <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute labels" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">configurable_attribute_labels</stringProp>
+                    <stringProp name="RegexExtractor.regex">"label":"(.*?)"</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">-1</stringProp>
+                    <stringProp name="Sample.scope">variable</stringProp>
+                    <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                  <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute values" enabled="true">
+                    <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                    <stringProp name="RegexExtractor.refname">configurable_attribute_values</stringProp>
+                    <stringProp name="RegexExtractor.regex">"values":(\{(?:\}|.*?\}\}))</stringProp>
+                    <stringProp name="RegexExtractor.template">$1$</stringProp>
+                    <stringProp name="RegexExtractor.default"/>
+                    <stringProp name="RegexExtractor.match_number">-1</stringProp>
+                    <stringProp name="Sample.scope">variable</stringProp>
+                    <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
+                  </RegexExtractor>
+                  <hashTree/>
+                </hashTree>
+                <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach configurable attribute id" enabled="true">
+                  <stringProp name="ForeachController.inputVal">configurable_attribute_ids</stringProp>
+                  <stringProp name="ForeachController.returnVal">configurable_attribute_id</stringProp>
+                  <boolProp name="ForeachController.useSeparator">true</boolProp>
+                </ForeachController>
+                <hashTree>
+                  <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+                    <stringProp name="CounterConfig.start">1</stringProp>
+                    <stringProp name="CounterConfig.end">${configurable_attribute_ids_matchNr}</stringProp>
+                    <stringProp name="CounterConfig.incr">1</stringProp>
+                    <stringProp name="CounterConfig.name">attribute_counter</stringProp>
+                    <stringProp name="CounterConfig.format"/>
+                    <boolProp name="CounterConfig.per_user">true</boolProp>
+                    <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
+                  </CounterConfig>
+                  <hashTree/>
+                  <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Process configurable attribute values" enabled="true">
+                    <stringProp name="BeanShellSampler.query">return vars.get("configurable_attribute_values_" + vars.get("attribute_counter"));</stringProp>
+                    <stringProp name="BeanShellSampler.filename"/>
+                    <stringProp name="BeanShellSampler.parameters"/>
+                    <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+                  </BeanShellSampler>
+                  <hashTree>
+                    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Exctract attribute values" enabled="true">
+                      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+                      <stringProp name="RegexExtractor.refname">attribute_${configurable_attribute_id}_values</stringProp>
+                      <stringProp name="RegexExtractor.regex">"value_index":"(\d+)"</stringProp>
+                      <stringProp name="RegexExtractor.template">$1$</stringProp>
+                      <stringProp name="RegexExtractor.default"/>
+                      <stringProp name="RegexExtractor.match_number">-1</stringProp>
+                      <stringProp name="Scope.variable">configurable_attribute_values_${attribute_counter}</stringProp>
+                    </RegexExtractor>
+                    <hashTree/>
+                  </hashTree>
+                </hashTree>
+                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Validate" enabled="true">
+                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                    <collectionProp name="Arguments.arguments">
+                      <elementProp name="isAjax" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">true</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">isAjax</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="form_key" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${admin_form_key}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">form_key</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[name]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_name}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[name]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[sku]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[sku]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[price]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${price_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[price]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">2</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[tax_class_id]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[weight]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">3</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[weight]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${category_additional}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[description]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[description]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[status]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[status]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_title]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_title]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_description]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_description]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[website_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[website_ids][]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_price]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${special_price_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_price]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_from_date]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_from_date]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_to_date]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_to_date]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[cost]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[cost]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design_from]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design_to]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[page_layout]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[page_layout]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[options_container]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">container2</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[options_container]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[configurable_variation]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[url_key]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_name}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[url_key]</stringProp>
+                      </elementProp>
+                      <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
+                      </elementProp>
+                      <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
+                      </elementProp>
+                      <elementProp name="product[visibility]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">4</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[visibility]</stringProp>
+                      </elementProp>
+                      <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+                        <stringProp name="Argument.desc">true</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">50</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">configurable</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                    </collectionProp>
+                  </elementProp>
+                  <stringProp name="HTTPSampler.domain"/>
+                  <stringProp name="HTTPSampler.port"/>
+                  <stringProp name="HTTPSampler.connect_timeout"/>
+                  <stringProp name="HTTPSampler.response_timeout"/>
+                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+                  <stringProp name="HTTPSampler.contentEncoding"/>
+                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${configurable_product_id}/</stringProp>
+                  <stringProp name="HTTPSampler.method">POST</stringProp>
+                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+                  <boolProp name="HTTPSampler.monitor">false</boolProp>
+                  <stringProp name="HTTPSampler.embedded_url_re"/>
+                </HTTPSamplerProxy>
+                <hashTree>
+                  <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
+                    <boolProp name="resetInterpreter">false</boolProp>
+                    <stringProp name="parameters"/>
+                    <stringProp name="filename"/>
+                    <stringProp name="script">try {
+    	int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
+    	for (int i = 1; i &lt;= attributesCount; i++) {
+    		attributeId = vars.get("configurable_attribute_ids_" + i.toString());
+    		attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
+    		attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
+    		ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
+    		ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
+    		ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
+    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
+    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
+    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
+    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
+
+    		int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
+    		for (int j = 1; j &lt;= valuesCount; j++) {
+    			attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
+    			ctx.getCurrentSampler().addArgument(
+    				"product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
+    				"1"
+    			);
+    			ctx.getCurrentSampler().addArgument(
+    				"product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
+    				attributeValue
+    			);
+    		}
+    	}
+    	ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
+    } catch (Exception e) {
+        log.error("error???", e);
+    }</stringProp>
+                  </BeanShellPreProcessor>
+                  <hashTree/>
+                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                    <collectionProp name="Asserion.test_strings">
+                      <stringProp name="1853918323">{"error":false}</stringProp>
+                    </collectionProp>
+                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                    <boolProp name="Assertion.assume_success">false</boolProp>
+                    <intProp name="Assertion.test_type">2</intProp>
+                  </ResponseAssertion>
+                  <hashTree/>
+                </hashTree>
+                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Save" enabled="true">
+                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+                    <collectionProp name="Arguments.arguments">
+                      <elementProp name="ajax" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">true</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">ajax</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="isAjax" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">true</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">isAjax</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="form_key" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${admin_form_key}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">form_key</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[name]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_name}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[name]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[sku]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[sku]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[price]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${price_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[price]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[tax_class_id]admin" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">2</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[tax_class_id]admin</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[weight]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">3</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[weight]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[category_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${category_additional}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[category_ids][]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[description]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[description]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[status]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[status]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_title]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_title]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_keyword]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[meta_description]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[meta_description]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[website_ids][]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[website_ids][]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_price]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${special_price_new}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_price]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_from_date]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_from_date]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[special_to_date]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[special_to_date]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[cost]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[cost]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">0</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design_from]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_design_to]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[page_layout]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value"/>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[page_layout]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[options_container]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">container2</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[options_container]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[configurable_variation]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[url_key]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">${configurable_product_name}</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[url_key]</stringProp>
+                      </elementProp>
+                      <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
+                      </elementProp>
+                      <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
+                      </elementProp>
+                      <elementProp name="product[visibility]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">4</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[visibility]</stringProp>
+                      </elementProp>
+                      <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">1</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[product_has_weight]</stringProp>
+                        <stringProp name="Argument.desc">true</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">50</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                      <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
+                        <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                        <stringProp name="Argument.value">configurable</stringProp>
+                        <stringProp name="Argument.metadata">=</stringProp>
+                        <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                        <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
+                        <stringProp name="Argument.desc">false</stringProp>
+                      </elementProp>
+                    </collectionProp>
+                  </elementProp>
+                  <stringProp name="HTTPSampler.domain"/>
+                  <stringProp name="HTTPSampler.port"/>
+                  <stringProp name="HTTPSampler.connect_timeout"/>
+                  <stringProp name="HTTPSampler.response_timeout"/>
+                  <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+                  <stringProp name="HTTPSampler.contentEncoding"/>
+                  <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${configurable_product_id}/back/edit/active_tab/product-details/</stringProp>
+                  <stringProp name="HTTPSampler.method">POST</stringProp>
+                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+                  <boolProp name="HTTPSampler.monitor">false</boolProp>
+                  <stringProp name="HTTPSampler.embedded_url_re"/>
+                </HTTPSamplerProxy>
+                <hashTree>
+                  <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
+                    <boolProp name="resetInterpreter">false</boolProp>
+                    <stringProp name="parameters"/>
+                    <stringProp name="filename"/>
+                    <stringProp name="script">try {
+    	int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
+    	for (int i = 1; i &lt;= attributesCount; i++) {
+    		attributeId = vars.get("configurable_attribute_ids_" + i.toString());
+    		attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
+    		attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
+    		ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
+    		ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
+    		ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
+    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
+    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
+    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
+    		ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
+
+    		int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
+    		for (int j = 1; j &lt;= valuesCount; j++) {
+    			attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
+    			ctx.getCurrentSampler().addArgument(
+    				"product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
+    				"1"
+    			);
+    			ctx.getCurrentSampler().addArgument(
+    				"product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
+    				attributeValue
+    			);
+    		}
+    	}
+    	ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
+    } catch (Exception e) {
+        log.error("error???", e);
+    }</stringProp>
+                  </BeanShellPreProcessor>
+                  <hashTree/>
+                  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+                    <collectionProp name="Asserion.test_strings">
+                      <stringProp name="-583471546">You saved the product</stringProp>
+                    </collectionProp>
+                    <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+                    <boolProp name="Assertion.assume_success">false</boolProp>
+                    <intProp name="Assertion.test_type">2</intProp>
+                    <stringProp name="TestPlan.comments"> if have trouble see messages-message-error </stringProp>
+                  </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Category Management" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${adminCategoryManagementPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Admin Category Management");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
+        <hashTree/>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
+        <hashTree/>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="dummy" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[url_key]</stringProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
           </elementProp>
-          <elementProp name="export_filter[url_path]" elementType="HTTPArgument">
+          <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[url_path]</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
           </elementProp>
-          <elementProp name="export_filter[use_config_allow_message][]" elementType="HTTPArgument">
+          <elementProp name="login[password]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[use_config_allow_message][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
           </elementProp>
-          <elementProp name="export_filter[use_config_email_template][]" elementType="HTTPArgument">
+          <elementProp name="login[username]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[use_config_email_template][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
           </elementProp>
-          <elementProp name="export_filter[use_config_is_redeemable][]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[use_config_is_redeemable][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+        </collectionProp>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
+</OnceOnlyController>
+    <hashTree>
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Admin Category Management" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/setup_admin_category_management.jmx</stringProp>
+</GenericController>
+    <hashTree>
+      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Clear Admin Category Management properties" enabled="true">
+        <stringProp name="BeanShellSampler.query">props.remove("admin_category_ids_list");</stringProp>
+        <stringProp name="BeanShellSampler.filename"/>
+        <stringProp name="BeanShellSampler.parameters"/>
+        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+      </BeanShellSampler>
+      <hashTree/>
+      <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Get categories of last level" enabled="true"/>
+      <hashTree>
+        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+          <collectionProp name="HeaderManager.headers">
+            <elementProp name="" elementType="Header">
+              <stringProp name="Header.name">Content-Type</stringProp>
+              <stringProp name="Header.value">application/json</stringProp>
+            </elementProp>
+            <elementProp name="" elementType="Header">
+              <stringProp name="Header.name">Accept</stringProp>
+              <stringProp name="Header.value">*/*</stringProp>
+            </elementProp>
+          </collectionProp>
+        </HeaderManager>
+        <hashTree/>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
+          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+            <collectionProp name="Arguments.arguments">
+              <elementProp name="" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+              </elementProp>
+            </collectionProp>
           </elementProp>
-          <elementProp name="export_filter[use_config_lifetime][]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[use_config_lifetime][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="HTTPSampler.domain"/>
+          <stringProp name="HTTPSampler.port"/>
+          <stringProp name="HTTPSampler.connect_timeout"/>
+          <stringProp name="HTTPSampler.response_timeout"/>
+          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"/>
+          <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
+          <stringProp name="HTTPSampler.method">POST</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <boolProp name="HTTPSampler.monitor">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"/>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+            <stringProp name="VAR">admin_token</stringProp>
+            <stringProp name="JSONPATH">$</stringProp>
+            <stringProp name="DEFAULT"/>
+            <stringProp name="VARIABLE"/>
+            <stringProp name="SUBJECT">BODY</stringProp>
+          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+          <hashTree/>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
+            <collectionProp name="Asserion.test_strings">
+              <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
+            </collectionProp>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">1</intProp>
+            <stringProp name="Assertion.scope">variable</stringProp>
+            <stringProp name="Scope.variable">admin_token</stringProp>
+          </ResponseAssertion>
+          <hashTree/>
+        </hashTree>
+        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+          <collectionProp name="HeaderManager.headers">
+            <elementProp name="" elementType="Header">
+              <stringProp name="Header.name">Authorization</stringProp>
+              <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
+            </elementProp>
+          </collectionProp>
+        </HeaderManager>
+        <hashTree/>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - API Get categories" enabled="true">
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+            <collectionProp name="Arguments.arguments">
+              <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                <stringProp name="Argument.value">children_count</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+                <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
+              </elementProp>
+              <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                <stringProp name="Argument.value">0</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+                <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
+              </elementProp>
+              <elementProp name="searchCriteria[filterGroups][1][filters][0][field]" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                <stringProp name="Argument.value">level</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+                <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][field]</stringProp>
+              </elementProp>
+              <elementProp name="searchCriteria[filterGroups][1][filters][0][value]" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                <stringProp name="Argument.value">2</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+                <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][value]</stringProp>
+              </elementProp>
+              <elementProp name="searchCriteria[filterGroups][1][filters][0][conditionType]" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                <stringProp name="Argument.value">gt</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+                <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][conditionType]</stringProp>
+              </elementProp>
+              <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                <stringProp name="Argument.value">${adminCategoryCount}</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+                <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
+              </elementProp>
+            </collectionProp>
           </elementProp>
-          <elementProp name="export_filter[visibility]" elementType="HTTPArgument">
+          <stringProp name="HTTPSampler.domain"/>
+          <stringProp name="HTTPSampler.port"/>
+          <stringProp name="HTTPSampler.connect_timeout"/>
+          <stringProp name="HTTPSampler.response_timeout"/>
+          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"/>
+          <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories/list</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <boolProp name="HTTPSampler.monitor">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"/>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">category_list_id</stringProp>
+            <stringProp name="RegexExtractor.regex">\{\"id\":(\d+),</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">-1</stringProp>
+          </RegexExtractor>
+          <hashTree/>
+        </hashTree>
+        <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Category Id" enabled="true">
+          <stringProp name="ForeachController.inputVal">category_list_id</stringProp>
+          <stringProp name="ForeachController.returnVal">category_id</stringProp>
+          <boolProp name="ForeachController.useSeparator">true</boolProp>
+        </ForeachController>
+        <hashTree>
+          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Process categories ids" enabled="true">
+            <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
+
+adminCategoryIdsList = props.get("admin_category_ids_list");
+// If it is first iteration of cycle then recreate categories ids list
+if (adminCategoryIdsList == null) {
+    adminCategoryIdsList = new ArrayList();
+    props.put("admin_category_ids_list", adminCategoryIdsList);
+}
+adminCategoryIdsList.add(vars.get("category_id"));</stringProp>
+            <stringProp name="BeanShellSampler.filename"/>
+            <stringProp name="BeanShellSampler.parameters"/>
+            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+          </BeanShellSampler>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+    </hashTree>
+  </hashTree>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Category Management" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_category_management/admin_category_management.jmx</stringProp>
+</TestFragmentController>
+    <hashTree>
+         <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Set Arguments" enabled="true">
+      <stringProp name="scriptLanguage">javascript</stringProp>
+      <stringProp name="parameters"/>
+      <stringProp name="filename"/>
+      <stringProp name="cacheKey"/>
+      <stringProp name="script">random = new java.util.Random();
+if (${seedForRandom} &gt; 0) {
+random.setSeed(${seedForRandom} + ${__threadNum});
+}
+
+/**
+ * Get unique ids for fix concurrent category saving
+ */
+function getNextProductNumber(i) {
+    number = productsVariationsSize * ${__threadNum} - i;
+    if (number &gt;= productsSize) {
+        log.info("${testLabel}: capacity of product list is not enough for support all ${adminPoolUsers} threads");
+        return random.nextInt(productsSize);
+    }
+    return productsVariationsSize * ${__threadNum} - i;
+}
+
+var productsVariationsSize = 5,
+    productsSize = props.get("simple_products_list").size();
+
+
+for (i = 1; i&lt;= productsVariationsSize; i++) {
+    var productVariablePrefix = "simple_product_" + i + "_";
+    number = getNextProductNumber(i);
+    simpleList = props.get("simple_products_list").get(number);
+
+    vars.put(productVariablePrefix + "url_key", simpleList.get("url_key"));
+    vars.put(productVariablePrefix + "id", simpleList.get("id"));
+    vars.put(productVariablePrefix + "name", simpleList.get("title"));
+}
+
+categoryIndex = random.nextInt(props.get("admin_category_ids_list").size());
+vars.put("parent_category_id", props.get("admin_category_ids_list").get(categoryIndex));
+do {
+categoryIndexNew = random.nextInt(props.get("admin_category_ids_list").size());
+} while(categoryIndex == categoryIndexNew);
+vars.put("new_parent_category_id", props.get("admin_category_ids_list").get(categoryIndexNew));</stringProp>
+    </JSR223Sampler>
+      <hashTree/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+          <collectionProp name="HeaderManager.headers">
+            <elementProp name="Accept-Language" elementType="Header">
+              <stringProp name="Header.name">Accept-Language</stringProp>
+              <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
+            </elementProp>
+            <elementProp name="Accept" elementType="Header">
+              <stringProp name="Header.name">Accept</stringProp>
+              <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
+            </elementProp>
+            <elementProp name="User-Agent" elementType="Header">
+              <stringProp name="Header.name">User-Agent</stringProp>
+              <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
+            </elementProp>
+            <elementProp name="Accept-Encoding" elementType="Header">
+              <stringProp name="Header.name">Accept-Encoding</stringProp>
+              <stringProp name="Header.value">gzip, deflate</stringProp>
+            </elementProp>
+          </collectionProp>
+        </HeaderManager>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+          <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select parent category" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${parent_category_id}/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+          <collectionProp name="HeaderManager.headers">
+            <elementProp name="Accept-Language" elementType="Header">
+              <stringProp name="Header.name">Accept-Language</stringProp>
+              <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
+            </elementProp>
+            <elementProp name="Accept" elementType="Header">
+              <stringProp name="Header.name">Accept</stringProp>
+              <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
+            </elementProp>
+            <elementProp name="User-Agent" elementType="Header">
+              <stringProp name="Header.name">User-Agent</stringProp>
+              <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
+            </elementProp>
+            <elementProp name="Accept-Encoding" elementType="Header">
+              <stringProp name="Header.name">Accept-Encoding</stringProp>
+              <stringProp name="Header.value">gzip, deflate</stringProp>
+            </elementProp>
+          </collectionProp>
+        </HeaderManager>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open new category page" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/add/store/0/parent/${parent_category_id}</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-1903925024">&lt;title&gt;New Category</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create category" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">id</stringProp>
+            </elementProp>
+            <elementProp name="parent" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${parent_category_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">parent</stringProp>
+            </elementProp>
+            <elementProp name="path" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">path</stringProp>
+            </elementProp>
+            <elementProp name="store_id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">store_id</stringProp>
+            </elementProp>
+            <elementProp name="is_active" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">is_active</stringProp>
+            </elementProp>
+            <elementProp name="include_in_menu" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">include_in_menu</stringProp>
+            </elementProp>
+            <elementProp name="is_anchor" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">is_anchor</stringProp>
+            </elementProp>
+            <elementProp name="use_config[available_sort_by]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">use_config[available_sort_by]</stringProp>
+            </elementProp>
+            <elementProp name="use_config[default_sort_by]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">use_config[default_sort_by]</stringProp>
+            </elementProp>
+            <elementProp name="use_config[filter_price_range]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">use_config[filter_price_range]</stringProp>
+            </elementProp>
+            <elementProp name="use_default[url_key]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">false</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">use_default[url_key]</stringProp>
+            </elementProp>
+            <elementProp name="url_key_create_redirect" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">url_key_create_redirect</stringProp>
+            </elementProp>
+            <elementProp name="custom_use_parent_settings" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">custom_use_parent_settings</stringProp>
+            </elementProp>
+            <elementProp name="custom_apply_to_products" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">custom_apply_to_products</stringProp>
+            </elementProp>
+            <elementProp name="name" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Admin Category Management ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">name</stringProp>
+            </elementProp>
+            <elementProp name="url_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">admin-category-management-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">url_key</stringProp>
+            </elementProp>
+            <elementProp name="meta_title" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">meta_title</stringProp>
+            </elementProp>
+            <elementProp name="description" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">description</stringProp>
+            </elementProp>
+            <elementProp name="display_mode" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">PRODUCTS</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">display_mode</stringProp>
+            </elementProp>
+            <elementProp name="default_sort_by" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">position</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">default_sort_by</stringProp>
+            </elementProp>
+            <elementProp name="meta_keywords" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">meta_keywords</stringProp>
+            </elementProp>
+            <elementProp name="meta_description" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">meta_description</stringProp>
+            </elementProp>
+            <elementProp name="custom_layout_update" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">custom_layout_update</stringProp>
+            </elementProp>
+            <elementProp name="category_products" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">false</boolProp>
+              <stringProp name="Argument.value">{"${simple_product_1_id}":"","${simple_product_2_id}":"","${simple_product_3_id}":"","${simple_product_4_id}":"","${simple_product_5_id}":""}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">category_products</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/save/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">URL</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_id</stringProp>
+          <stringProp name="RegexExtractor.regex">/catalog/category/edit/id/(\d+)/</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select created category" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${admin_category_id}/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+          <collectionProp name="HeaderManager.headers">
+            <elementProp name="Accept-Language" elementType="Header">
+              <stringProp name="Header.name">Accept-Language</stringProp>
+              <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
+            </elementProp>
+            <elementProp name="Accept" elementType="Header">
+              <stringProp name="Header.name">Accept</stringProp>
+              <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
+            </elementProp>
+            <elementProp name="User-Agent" elementType="Header">
+              <stringProp name="Header.name">User-Agent</stringProp>
+              <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
+            </elementProp>
+            <elementProp name="Accept-Encoding" elementType="Header">
+              <stringProp name="Header.name">Accept-Encoding</stringProp>
+              <stringProp name="Header.value">gzip, deflate</stringProp>
+            </elementProp>
+          </collectionProp>
+        </HeaderManager>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category row id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_entity_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"entity_id":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category attribute set id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_attribute_set_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"attribute_set_id":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category parent Id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_parent_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"parent_id":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category created at" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_created_at</stringProp>
+          <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category updated at" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_updated_at</stringProp>
+          <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category path" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_path</stringProp>
+          <stringProp name="RegexExtractor.regex">"entity_id":(.+)"path":"([^\"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$2$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category level" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_level</stringProp>
+          <stringProp name="RegexExtractor.regex">"level":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category name" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_name</stringProp>
+          <stringProp name="RegexExtractor.regex">"entity_id":(.+)"name":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$2$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url key" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_url_key</stringProp>
+          <stringProp name="RegexExtractor.regex">"url_key":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url path" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_category_url_path</stringProp>
+          <stringProp name="RegexExtractor.regex">"url_path":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category row id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_entity_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category attribute set id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_attribute_set_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category parent id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_parent_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category created at" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_created_at</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category updated at" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_updated_at</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category path" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="59022110">^[\d\\\/]+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_path</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category level" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_level</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category name" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_name</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url key" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_url_key</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url path" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_category_url_path</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert products added" enabled="true">
+            <collectionProp name="Asserion.test_strings">
+              <stringProp name="417284990">${simple_product_1_name}</stringProp>
+              <stringProp name="1304788671">${simple_product_2_name}</stringProp>
+              <stringProp name="-2102674944">${simple_product_3_name}</stringProp>
+              <stringProp name="-1215171263">${simple_product_4_name}</stringProp>
+              <stringProp name="-327667582">${simple_product_5_name}</stringProp>
+            </collectionProp>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">2</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Move category" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_category_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">id</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+            </elementProp>
+            <elementProp name="point" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">append</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">point</stringProp>
+            </elementProp>
+            <elementProp name="pid" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${new_parent_category_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">pid</stringProp>
+            </elementProp>
+            <elementProp name="paid" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${parent_category_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">paid</stringProp>
+            </elementProp>
+            <elementProp name="aid" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">aid</stringProp>
+            </elementProp>
+            <elementProp name="isAjax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/move/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete category" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/delete/id/${admin_category_id}/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category deleted" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="1277069529">You deleted the category.</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
+        <intProp name="ActionProcessor.action">1</intProp>
+        <intProp name="ActionProcessor.target">0</intProp>
+        <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCategoryManagementDelay}*1000))}</stringProp>
+      </TestAction>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
+  </hashTree>
+  </hashTree>
+
+  
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Promotion Rules" enabled="true">
+      <intProp name="ThroughputController.style">1</intProp>
+      <boolProp name="ThroughputController.perThread">false</boolProp>
+      <intProp name="ThroughputController.maxThroughput">1</intProp>
+      <stringProp name="ThroughputController.percentThroughput">${adminPromotionRulesPercentage}</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <hashTree>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
+            <stringProp name="script">
+var testLabel = "${testLabel}" ? " (${testLabel})" : "";
+if (testLabel
+    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+) {
+    if (sampler.getName().indexOf(testLabel) == -1) {
+       sampler.setName(sampler.getName() + testLabel);
+    }
+} else if (sampler.getName().indexOf("SetUp - ") == -1) {
+    sampler.setName("SetUp - " + sampler.getName());
+}
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+        <hashTree/>
+        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
+            <stringProp name="BeanShellSampler.query">
+                vars.put("testLabel", "Admin Promotion Rules");
+            </stringProp>
+            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+        </BeanShellSampler>
+        <hashTree/>
+    
+        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
+        <stringProp name="script">
+        function getFormKeyFromResponse()
+        {
+            var url = prev.getUrlAsString(),
+            responseCode =  prev.getResponseCode(),
+            formKey = null;
+            searchPattern = /var FORM_KEY = '(.+)'/;
+            if (responseCode == "200" &amp;&amp; url) {
+                response = prev.getResponseDataAsString();
+                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
+            }
+            return formKey;
+        }
+
+        formKey = vars.get("form_key_storage");
+
+	   currentFormKey = getFormKeyFromResponse();
+
+	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
+		  vars.put("form_key_storage", currentFormKey);
+	   }
+        </stringProp>
+        <stringProp name="scriptLanguage">javascript</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
+        <hashTree/>
+        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
+            <stringProp name="script">
+                formKey =  vars.get("form_key_storage");
+                if (formKey
+                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
+                    &amp;&amp; sampler.getMethod() == "POST")
+                    {
+                        arguments = sampler.getArguments();
+                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
+                        {
+                            argument = arguments.getArgument(i);
+                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
+                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
+                            argument.setValue(formKey);
+                        }
+                    }
+                }
+            </stringProp>
+            <stringProp name="scriptLanguage">javascript</stringProp>
+        </JSR223PreProcessor>
+        <hashTree/>
+    
+    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+      <collectionProp name="CookieManager.cookies"/>
+      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
+    <hashTree/>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-1397214398">Welcome</stringProp>
+          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">1</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="2845929">^.+$</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">1</intProp>
+        <stringProp name="Assertion.scope">variable</stringProp>
+        <stringProp name="Scope.variable">admin_form_key</stringProp>
+      </ResponseAssertion>
+      <hashTree/>
+    </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="dummy" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[visibility]</stringProp>
             <stringProp name="Argument.value"/>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">dummy</stringProp>
           </elementProp>
-          <elementProp name="export_filter[weight][]" elementType="HTTPArgument">
+          <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[weight][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">form_key</stringProp>
           </elementProp>
-          <elementProp name="export_filter[weight_type][]" elementType="HTTPArgument">
+          <elementProp name="login[password]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">export_filter[weight_type][]</stringProp>
-            <stringProp name="Argument.value">,</stringProp>
+            <stringProp name="Argument.value">${admin_password}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[password]</stringProp>
           </elementProp>
-          <elementProp name="frontend_label" elementType="HTTPArgument">
+          <elementProp name="login[username]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.name">frontend_label</stringProp>
-            <stringProp name="Argument.value"/>
+            <stringProp name="Argument.value">${admin_user}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
+            <stringProp name="Argument.name">login[username]</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -32292,35 +31396,474 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/export/export/entity/catalog_product/file_format/csv</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <stringProp name="HTTPSampler.implementation">Java</stringProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Promotions Management" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_promotions_management/admin_promotions_management.jmx</stringProp>
+</TestFragmentController>
+    <hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/new</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New Conditional" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="isAjax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+              <stringProp name="Argument.desc">true</stringProp>
+            </elementProp>
+            <elementProp name="id" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1--1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">id</stringProp>
+            </elementProp>
+            <elementProp name="type" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address|base_subtotal</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">type</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/newConditionHtml/form/sales_rule_formrule_conditions_fieldset_/form_namespace/sales_rule_form</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree/>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="name" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Rule Name ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">name</stringProp>
+            </elementProp>
+            <elementProp name="is_active" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">is_active</stringProp>
+            </elementProp>
+            <elementProp name="use_auto_generation" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">use_auto_generation</stringProp>
+            </elementProp>
+            <elementProp name="is_rss" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">is_rss</stringProp>
+            </elementProp>
+            <elementProp name="apply_to_shipping" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">apply_to_shipping</stringProp>
+            </elementProp>
+            <elementProp name="stop_rules_processing" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">stop_rules_processing</stringProp>
+            </elementProp>
+            <elementProp name="coupon_code" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">coupon_code</stringProp>
+            </elementProp>
+            <elementProp name="uses_per_coupon" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">uses_per_coupon</stringProp>
+            </elementProp>
+            <elementProp name="uses_per_customer" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">uses_per_customer</stringProp>
+            </elementProp>
+            <elementProp name="sort_order" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">sort_order</stringProp>
+            </elementProp>
+            <elementProp name="discount_amount" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">5</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">discount_amount</stringProp>
+            </elementProp>
+            <elementProp name="discount_qty" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">discount_qty</stringProp>
+            </elementProp>
+            <elementProp name="discount_step" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">discount_step</stringProp>
+            </elementProp>
+            <elementProp name="reward_points_delta" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">reward_points_delta</stringProp>
+            </elementProp>
+            <elementProp name="store_labels[0]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">store_labels[0]</stringProp>
+            </elementProp>
+            <elementProp name="description" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Rule Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">description</stringProp>
+            </elementProp>
+            <elementProp name="coupon_type" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">coupon_type</stringProp>
+            </elementProp>
+            <elementProp name="simple_action" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">cart_fixed</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">simple_action</stringProp>
+            </elementProp>
+            <elementProp name="website_ids[0]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">website_ids[0]</stringProp>
+            </elementProp>
+            <elementProp name="customer_group_ids[0]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">0</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer_group_ids[0]</stringProp>
+            </elementProp>
+            <elementProp name="from_date" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">from_date</stringProp>
+            </elementProp>
+            <elementProp name="to_date" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">to_date</stringProp>
+            </elementProp>
+            <elementProp name="rule[conditions][1][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Combine</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[conditions][1][type]</stringProp>
+            </elementProp>
+            <elementProp name="rule[conditions][1][aggregator]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">all</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[conditions][1][aggregator]</stringProp>
+            </elementProp>
+            <elementProp name="rule[conditions][1][value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[conditions][1][value]</stringProp>
+            </elementProp>
+            <elementProp name="rule[conditions][1--1][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[conditions][1--1][type]</stringProp>
+            </elementProp>
+            <elementProp name="rule[conditions][1--1][attribute]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">base_subtotal</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[conditions][1--1][attribute]</stringProp>
+            </elementProp>
+            <elementProp name="rule[conditions][1--1][operator]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">&gt;=</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[conditions][1--1][operator]</stringProp>
+            </elementProp>
+            <elementProp name="rule[conditions][1--1][value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">100</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[conditions][1--1][value]</stringProp>
+            </elementProp>
+            <elementProp name="rule[conditions][1][new_chlid]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[conditions][1][new_chlid]</stringProp>
+            </elementProp>
+            <elementProp name="rule[actions][1][type]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Product\Combine</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[actions][1][type]</stringProp>
+            </elementProp>
+            <elementProp name="rule[actions][1][aggregator]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">all</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[actions][1][aggregator]</stringProp>
+            </elementProp>
+            <elementProp name="rule[actions][1][value]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[actions][1][value]</stringProp>
+            </elementProp>
+            <elementProp name="rule[actions][1][new_child]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">rule[actions][1][new_child]</stringProp>
+            </elementProp>
+            <elementProp name="store_labels[1]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">store_labels[1]</stringProp>
+            </elementProp>
+            <elementProp name="store_labels[2]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">store_labels[2]</stringProp>
+            </elementProp>
+            <elementProp name="related_banners" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">related_banners</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/save/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-396438583">You saved the rule.</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">16</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
+        <intProp name="ActionProcessor.action">1</intProp>
+        <intProp name="ActionProcessor.target">0</intProp>
+        <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminPromotionsManagementDelay}*1000))}</stringProp>
+      </TestAction>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+  
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/export_products/export_products.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-261088822">Simple Product 1</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">16</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
   </hashTree>
   </hashTree>
 
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Export Customers" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Customer Management" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${exportCustomersPercentage}</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${adminCustomerManagementPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -32341,7 +31884,7 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Export Customers");
+                vars.put("testLabel", "Admin Customer Management");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
@@ -32401,10 +31944,36 @@ if (testLabel
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
     <hashTree/>
   
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
     <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
+      </stringProp>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
+    <hashTree/>
+  </hashTree>
+  
     <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
@@ -32505,987 +32074,1930 @@ if (testLabel
       <stringProp name="HTTPSampler.implementation">Java</stringProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree/>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Export Page" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/export/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/export.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1723813687">Export Settings</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Export Customers" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-            <stringProp name="Argument.desc">false</stringProp>
-          </elementProp>
-          <elementProp name="attribute_code" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">attribute_code</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[confirmation]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[confirmation]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[created_at]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[created_at]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[created_in]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[created_in]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[default_billing][]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[default_billing][]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[default_shipping][]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[default_shipping][]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[disable_auto_group_change]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[disable_auto_group_change]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[dob][]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[dob][]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[email]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[email]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[firstname]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[firstname]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[gender]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[gender]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[group_id]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[group_id]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[lastname]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[lastname]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[middlename]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[middlename]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[password_hash]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[password_hash]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[prefix]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[prefix]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[reward_update_notification][]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[reward_update_notification][]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[reward_warning_notification][]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[reward_warning_notification][]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[rp_token]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[rp_token]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[rp_token_created_at][]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">,</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[rp_token_created_at][]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[store_id]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[store_id]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[suffix]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[suffix]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[taxvat]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[taxvat]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="export_filter[website_id]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">export_filter[website_id]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="frontend_label" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">frontend_label</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/export/export/entity/customer/file_format/csv</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/export_customers/export_customers.jmx</stringProp></HTTPSamplerProxy>
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
+    </HTTPSamplerProxy>
     <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-2040454917">user_1@example.com</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">16</intProp>
-      </ResponseAssertion>
-      <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
     </hashTree>
   </hashTree>
-  </hashTree>
-
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Browse Product Grid" enabled="true">
-      <intProp name="ThroughputController.style">1</intProp>
-      <boolProp name="ThroughputController.perThread">false</boolProp>
-      <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${browseProductGridPercentage}</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
     <hashTree>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
-            <stringProp name="script">
-var testLabel = "${testLabel}" ? " (${testLabel})" : "";
-if (testLabel
-    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-) {
-    if (sampler.getName().indexOf(testLabel) == -1) {
-       sampler.setName(sampler.getName() + testLabel);
-    }
-} else if (sampler.getName().indexOf("SetUp - ") == -1) {
-    sampler.setName("SetUp - " + sampler.getName());
-}
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
+    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Customer Management" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_customer_management/admin_customer_management.jmx</stringProp>
+</TestFragmentController>
+    <hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+          <collectionProp name="HeaderManager.headers">
+            <elementProp name="Accept-Language" elementType="Header">
+              <stringProp name="Header.name">Accept-Language</stringProp>
+              <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
+            </elementProp>
+            <elementProp name="Accept" elementType="Header">
+              <stringProp name="Header.name">Accept</stringProp>
+              <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
+            </elementProp>
+            <elementProp name="User-Agent" elementType="Header">
+              <stringProp name="Header.name">User-Agent</stringProp>
+              <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
+            </elementProp>
+            <elementProp name="Accept-Encoding" elementType="Header">
+              <stringProp name="Header.name">Accept-Encoding</stringProp>
+              <stringProp name="Header.value">gzip, deflate</stringProp>
+            </elementProp>
+          </collectionProp>
+        </HeaderManager>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Render" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="namespace" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">customer_listing</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">namespace</stringProp>
+            </elementProp>
+            <elementProp name="search" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">search</stringProp>
+            </elementProp>
+            <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            </elementProp>
+            <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">20</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            </elementProp>
+            <elementProp name="paging[current]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">paging[current]</stringProp>
+            </elementProp>
+            <elementProp name="sorting[field]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">entity_id</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">sorting[field]</stringProp>
+            </elementProp>
+            <elementProp name="sorting[direction]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">asc</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">sorting[direction]</stringProp>
+            </elementProp>
+            <elementProp name="isAjax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+          <collectionProp name="HeaderManager.headers">
+            <elementProp name="" elementType="Header">
+              <stringProp name="Header.name">X-Requested-With</stringProp>
+              <stringProp name="Header.value">XMLHttpRequest</stringProp>
+            </elementProp>
+          </collectionProp>
+        </HeaderManager>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Render" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="namespace" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">customer_listing</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">namespace</stringProp>
+            </elementProp>
+            <elementProp name="search" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Lastname</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">search</stringProp>
+            </elementProp>
+            <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">filters[placeholder]</stringProp>
+            </elementProp>
+            <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">20</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">paging[pageSize]</stringProp>
+            </elementProp>
+            <elementProp name="paging[current]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">paging[current]</stringProp>
+            </elementProp>
+            <elementProp name="sorting[field]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">entity_id</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">sorting[field]</stringProp>
+            </elementProp>
+            <elementProp name="sorting[direction]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">asc</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">sorting[direction]</stringProp>
+            </elementProp>
+            <elementProp name="isAjax" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+          <collectionProp name="HeaderManager.headers">
+            <elementProp name="" elementType="Header">
+              <stringProp name="Header.name">X-Requested-With</stringProp>
+              <stringProp name="Header.value">XMLHttpRequest</stringProp>
+            </elementProp>
+          </collectionProp>
+        </HeaderManager>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer edit url" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">customer_edit_url_path</stringProp>
+          <stringProp name="RegexExtractor.regex">actions":\{"edit":\{"href":"(?:http|https):\\/\\/(.*?)\\/customer\\/index\\/edit\\/id\\/(\d+)\\/",</stringProp>
+          <stringProp name="RegexExtractor.template">/customer/index/edit/id/$2$/</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">0</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer edit url" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">customer_edit_url_path</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Customer" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}${customer_edit_url_path}</stringProp>
+        <stringProp name="HTTPSampler.method">GET</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert edit customer page" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="-1422614550">Customer Information</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer entity_id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_entity_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"entity_id":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract website_id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_website_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"website_id":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer firstname" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_firstname</stringProp>
+          <stringProp name="RegexExtractor.regex">"firstname":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer lastname" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_lastname</stringProp>
+          <stringProp name="RegexExtractor.regex">"lastname":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer email" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_email</stringProp>
+          <stringProp name="RegexExtractor.regex">"email":"([^\@]+@[^.]+.[^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract group_id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_group_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"group_id":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract store_id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_store_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"store_id":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extact created_at" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_created_at</stringProp>
+          <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract updated_at" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_updated_at</stringProp>
+          <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract is_active" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_is_active</stringProp>
+          <stringProp name="RegexExtractor.regex">"is_active":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract disable_auto_group_change" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_disable_auto_group_change</stringProp>
+          <stringProp name="RegexExtractor.regex">"disable_auto_group_change":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract created_in" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_created_in</stringProp>
+          <stringProp name="RegexExtractor.regex">"created_in":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract dob" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_dob</stringProp>
+          <stringProp name="RegexExtractor.regex">"dob":"(\d+)-(\d+)-(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$2$/$3$/$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_billing" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_default_billing</stringProp>
+          <stringProp name="RegexExtractor.regex">"default_billing":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_shipping" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_default_shipping</stringProp>
+          <stringProp name="RegexExtractor.regex">"default_shipping":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract gender" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_gender</stringProp>
+          <stringProp name="RegexExtractor.regex">"gender":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract failures_num" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_failures_num</stringProp>
+          <stringProp name="RegexExtractor.regex">"failures_num":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_entity_id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_entity_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{"entity_id":"(\d+)".+?"parent_id":"${admin_customer_entity_id}"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+       <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_created_at" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_created_at</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"created_at":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_updated_at" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_updated_at</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"updated_at":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_is_active" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_is_active</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"is_active":"(\d+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_city" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_city</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"city":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
         <hashTree/>
-        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
-            <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Browse Product Grid");
-            </stringProp>
-            <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
-        </BeanShellSampler>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_country_id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_country_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"country_id":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
         <hashTree/>
-    
-        <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
-        <stringProp name="script">
-        function getFormKeyFromResponse()
-        {
-            var url = prev.getUrlAsString(),
-            responseCode =  prev.getResponseCode(),
-            formKey = null;
-            searchPattern = /var FORM_KEY = '(.+)'/;
-            if (responseCode == "200" &amp;&amp; url) {
-                response = prev.getResponseDataAsString();
-                formKey = response  &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
-            }
-            return formKey;
-        }
-
-        formKey = vars.get("form_key_storage");
-
-	   currentFormKey = getFormKeyFromResponse();
-
-	   if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
-		  vars.put("form_key_storage", currentFormKey);
-	   }
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_firstname" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_firstname</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"firstname":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
         <hashTree/>
-        <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
-            <stringProp name="script">
-                formKey =  vars.get("form_key_storage");
-                if (formKey
-                    &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
-                    &amp;&amp; sampler.getMethod() == "POST")
-                    {
-                        arguments = sampler.getArguments();
-                        for (i=0; i&lt;arguments.getArgumentCount(); i++)
-                        {
-                            argument = arguments.getArgument(i);
-                            if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
-                            log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
-                            argument.setValue(formKey);
-                        }
-                    }
-                }
-            </stringProp>
-            <stringProp name="scriptLanguage">javascript</stringProp>
-        </JSR223PreProcessor>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_lastname" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_lastname</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"lastname":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
         <hashTree/>
-    
-    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-      <collectionProp name="CookieManager.cookies"/>
-      <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
-    <hashTree/>
-  
-    <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
-      <stringProp name="script">
-        vars.put("gridEntityType" , "Product");
-
-        pagesCount = parseInt(vars.get("products_page_size")) || 20;
-        vars.put("grid_entity_page_size" , pagesCount);
-        vars.put("grid_namespace" , "product_listing");
-        vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_product_filter_text"));
-        vars.put("grid_filter_field", "name");
-
-        // set sort fields and sort directions
-        vars.put("grid_sort_field_1", "name");
-        vars.put("grid_sort_field_2", "price");
-        vars.put("grid_sort_field_3", "attribute_set_id");
-        vars.put("grid_sort_order_1", "asc");
-        vars.put("grid_sort_order_2", "desc");
-      </stringProp>
-      <stringProp name="scriptLanguage">javascript</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_products_grid/setup.jmx</stringProp></JSR223PostProcessor>
-    <hashTree/>
-  
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="-1397214398">Welcome</stringProp>
-          <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
-        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-        <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
-        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
-        <stringProp name="RegexExtractor.template">$1$</stringProp>
-        <stringProp name="RegexExtractor.default"/>
-        <stringProp name="RegexExtractor.match_number">1</stringProp>
-      </RegexExtractor>
-      <hashTree/>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="2845929">^.+$</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">1</intProp>
-        <stringProp name="Assertion.scope">variable</stringProp>
-        <stringProp name="Scope.variable">admin_form_key</stringProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="dummy" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">dummy</stringProp>
-          </elementProp>
-          <elementProp name="form_key" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_form_key}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">form_key</stringProp>
-          </elementProp>
-          <elementProp name="login[password]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_password}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[password]</stringProp>
-          </elementProp>
-          <elementProp name="login[username]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${admin_user}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">login[username]</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
-      <stringProp name="HTTPSampler.method">POST</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <stringProp name="HTTPSampler.implementation">Java</stringProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
-    </HTTPSamplerProxy>
-    <hashTree/>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="namespace" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_namespace}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
-        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
-        <stringProp name="EXPECTED_VALUE">0</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">true</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
-        <stringProp name="VAR">entity_total_records</stringProp>
-        <stringProp name="JSONPATH">$.totalRecords</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
-        <stringProp name="cacheKey"/>
-        <stringProp name="filename"/>
-        <stringProp name="parameters"/>
-        <stringProp name="script">
-          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
-          var totalsRecord = parseInt(vars.get("entity_total_records"));
-          var pageCount = Math.round(totalsRecord/pageSize);
-
-          vars.put("grid_pages_count", pageCount);
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-      </JSR223PostProcessor>
-      <hashTree/>
-    </hashTree>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="namespace" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_namespace}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
-        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
-        <stringProp name="EXPECTED_VALUE">0</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">true</boolProp>
-        <boolProp name="ISREGEX">true</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
-        <stringProp name="VAR">entity_total_records</stringProp>
-        <stringProp name="JSONPATH">$.totalRecords</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
-        <stringProp name="parameters"/>
-        <stringProp name="filename"/>
-        <stringProp name="script">
-          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
-var totalsRecord = parseInt(vars.get("entity_total_records"));
-var pageCount = Math.round(totalsRecord/pageSize);
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_postcode" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_postcode</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"postcode":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_region</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"region":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region_id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_region_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"region_id":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address street" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_street</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"street":\["([^"]+)"\]</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_telephone" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_telephone</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"telephone":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_customer_id" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">admin_customer_address_customer_id</stringProp>
+          <stringProp name="RegexExtractor.regex">"address":\{"\d+":{.+?"parent_id":"${admin_customer_entity_id}".+?"customer_id":"([^"]+)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$</stringProp>
+          <stringProp name="RegexExtractor.default"/>
+          <stringProp name="RegexExtractor.match_number">1</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer entity_id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_entity_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert website_id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_website_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer firstname" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_firstname</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer lastname" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_lastname</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer email" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_email</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer group_id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_group_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer store_id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_store_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_at" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_created_at</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer updated_at" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_updated_at</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer is_active" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_is_active</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer disable_auto_group_change" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_disable_auto_group_change</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_in" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_created_in</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer dob" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="221072919">^\d+/\d+/\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_dob</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_billing" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_default_billing</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_shipping" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_default_shipping</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer gender" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_gender</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer failures_num" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_failures_num</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_entity_id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_entity_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_created_at" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_created_at</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_updated_at" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_updated_at</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_is_active" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_is_active</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_city" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_city</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_country_id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_country_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_firstname" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_firstname</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_lastname" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_lastname</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_postcode" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_postcode</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_region</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region_id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_region_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_street" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_street</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_telephone" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="2845929">^.+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_telephone</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_customer_id" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="89649215">^\d+$</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">1</intProp>
+          <stringProp name="Assertion.scope">variable</stringProp>
+          <stringProp name="Scope.variable">admin_customer_address_customer_id</stringProp>
+        </ResponseAssertion>
+        <hashTree/>
+        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+          <collectionProp name="HeaderManager.headers">
+            <elementProp name="Accept-Language" elementType="Header">
+              <stringProp name="Header.name">Accept-Language</stringProp>
+              <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
+            </elementProp>
+            <elementProp name="Accept" elementType="Header">
+              <stringProp name="Header.name">Accept</stringProp>
+              <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
+            </elementProp>
+            <elementProp name="User-Agent" elementType="Header">
+              <stringProp name="Header.name">User-Agent</stringProp>
+              <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
+            </elementProp>
+            <elementProp name="Accept-Encoding" elementType="Header">
+              <stringProp name="Header.name">Accept-Encoding</stringProp>
+              <stringProp name="Header.value">gzip, deflate</stringProp>
+            </elementProp>
+          </collectionProp>
+        </HeaderManager>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Validate" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="isAjax   " elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax   </stringProp>
+            </elementProp>
+            <elementProp name="customer[entity_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[entity_id]</stringProp>
+            </elementProp>
+            <elementProp name="customer[website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[website_id]</stringProp>
+            </elementProp>
+            <elementProp name="customer[email]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_email}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[email]</stringProp>
+            </elementProp>
+            <elementProp name="customer[group_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[group_id]</stringProp>
+            </elementProp>
+            <elementProp name="customer[store_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[store_id]</stringProp>
+            </elementProp>
+            <elementProp name="customer[created_at]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[created_at]</stringProp>
+            </elementProp>
+            <elementProp name="customer[updated_at]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[updated_at]</stringProp>
+            </elementProp>
+            <elementProp name="customer[is_active]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[is_active]</stringProp>
+            </elementProp>
+            <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
+            </elementProp>
+            <elementProp name="customer[created_in]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[created_in]</stringProp>
+            </elementProp>
+            <elementProp name="customer[prefix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[prefix]</stringProp>
+            </elementProp>
+            <elementProp name="customer[firstname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[firstname]</stringProp>
+            </elementProp>
+            <elementProp name="customer[middlename]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[middlename]</stringProp>
+            </elementProp>
+            <elementProp name="customer[lastname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[lastname]</stringProp>
+            </elementProp>
+            <elementProp name="customer[suffix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[suffix]</stringProp>
+            </elementProp>
+            <elementProp name="customer[dob]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[dob]</stringProp>
+            </elementProp>
+            <elementProp name="customer[default_billing]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[default_billing]</stringProp>
+            </elementProp>
+            <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[default_shipping]</stringProp>
+            </elementProp>
+            <elementProp name="customer[taxvat]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[taxvat]</stringProp>
+            </elementProp>
+            <elementProp name="customer[gender]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[gender]</stringProp>
+            </elementProp>
+            <elementProp name="customer[failures_num]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[failures_num]</stringProp>
+            </elementProp>
+            <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">John</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Doe</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][company]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Test Company</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][company]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][city]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Folsom</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][city]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">95630</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1234567890</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">false</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">false</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">123 Main</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][region]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][region]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">US</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">12</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/validate/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="49586">200</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">16</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Save" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+          <collectionProp name="Arguments.arguments">
+            <elementProp name="isAjax   " elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">isAjax   </stringProp>
+            </elementProp>
+            <elementProp name="customer[entity_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[entity_id]</stringProp>
+            </elementProp>
+            <elementProp name="customer[website_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[website_id]</stringProp>
+            </elementProp>
+            <elementProp name="customer[email]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_email}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[email]</stringProp>
+            </elementProp>
+            <elementProp name="customer[group_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[group_id]</stringProp>
+            </elementProp>
+            <elementProp name="customer[store_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[store_id]</stringProp>
+            </elementProp>
+            <elementProp name="customer[created_at]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[created_at]</stringProp>
+            </elementProp>
+            <elementProp name="customer[updated_at]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[updated_at]</stringProp>
+            </elementProp>
+            <elementProp name="customer[is_active]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[is_active]</stringProp>
+            </elementProp>
+            <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
+            </elementProp>
+            <elementProp name="customer[created_in]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[created_in]</stringProp>
+            </elementProp>
+            <elementProp name="customer[prefix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[prefix]</stringProp>
+            </elementProp>
+            <elementProp name="customer[firstname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[firstname]</stringProp>
+            </elementProp>
+            <elementProp name="customer[middlename]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[middlename]</stringProp>
+            </elementProp>
+            <elementProp name="customer[lastname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[lastname]</stringProp>
+            </elementProp>
+            <elementProp name="customer[suffix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[suffix]</stringProp>
+            </elementProp>
+            <elementProp name="customer[dob]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[dob]</stringProp>
+            </elementProp>
+            <elementProp name="customer[default_billing]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[default_billing]</stringProp>
+            </elementProp>
+            <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[default_shipping]</stringProp>
+            </elementProp>
+            <elementProp name="customer[taxvat]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[taxvat]</stringProp>
+            </elementProp>
+            <elementProp name="customer[gender]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[gender]</stringProp>
+            </elementProp>
+            <elementProp name="customer[failures_num]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[failures_num]</stringProp>
+            </elementProp>
+            <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
+            </elementProp>
 
-vars.put("grid_pages_count_filtered", pageCount);
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-      </JSR223PostProcessor>
+            <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
+            </elementProp>
+            <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">true</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">John</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Doe</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][company]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Test Company</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][company]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][city]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">Folsom</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][city]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">95630</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">1234567890</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">false</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">false</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">123 Main</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][region]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value"/>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][region]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">US</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
+            </elementProp>
+            <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">12</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
+            </elementProp>
+            <elementProp name="form_key" elementType="HTTPArgument">
+              <boolProp name="HTTPArgument.always_encode">true</boolProp>
+              <stringProp name="Argument.value">${admin_form_key}</stringProp>
+              <stringProp name="Argument.metadata">=</stringProp>
+              <boolProp name="HTTPArgument.use_equals">true</boolProp>
+              <stringProp name="Argument.name">form_key</stringProp>
+            </elementProp>
+          </collectionProp>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"/>
+        <stringProp name="HTTPSampler.port"/>
+        <stringProp name="HTTPSampler.connect_timeout"/>
+        <stringProp name="HTTPSampler.response_timeout"/>
+        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"/>
+        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/save/</stringProp>
+        <stringProp name="HTTPSampler.method">POST</stringProp>
+        <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+        <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+        <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+        <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+        <boolProp name="HTTPSampler.monitor">false</boolProp>
+        <stringProp name="HTTPSampler.embedded_url_re"/>
+      </HTTPSamplerProxy>
+      <hashTree>
+        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer saved" enabled="true">
+          <collectionProp name="Asserion.test_strings">
+            <stringProp name="292987815">You saved the customer.</stringProp>
+          </collectionProp>
+          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+          <boolProp name="Assertion.assume_success">false</boolProp>
+          <intProp name="Assertion.test_type">2</intProp>
+        </ResponseAssertion>
+        <hashTree/>
+      </hashTree>
+      <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
+        <intProp name="ActionProcessor.action">1</intProp>
+        <intProp name="ActionProcessor.target">0</intProp>
+        <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCustomerManagementDelay}*1000))}</stringProp>
+      </TestAction>
       <hashTree/>
     </hashTree>
   </hashTree>
   
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
-      <stringProp name="CounterConfig.start">1</stringProp>
-      <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
-      <stringProp name="CounterConfig.incr">1</stringProp>
-      <stringProp name="CounterConfig.name">page_number</stringProp>
-      <stringProp name="CounterConfig.format"/>
-      <boolProp name="CounterConfig.per_user">true</boolProp>
-      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
-    <hashTree/>
-  
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
-      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="namespace" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_namespace}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${page_number}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="HTTPSampler.domain"/>
-      <stringProp name="HTTPSampler.port"/>
-      <stringProp name="HTTPSampler.connect_timeout"/>
-      <stringProp name="HTTPSampler.response_timeout"/>
-      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-      <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
-      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-      <boolProp name="HTTPSampler.monitor">false</boolProp>
-      <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
-    <hashTree>
-      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-        <collectionProp name="Asserion.test_strings">
-          <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
-        </collectionProp>
-        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-        <boolProp name="Assertion.assume_success">false</boolProp>
-        <intProp name="Assertion.test_type">2</intProp>
-      </ResponseAssertion>
-      <hashTree/>
-    </hashTree>
-  
-    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
-      <stringProp name="CounterConfig.start">1</stringProp>
-      <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
-      <stringProp name="CounterConfig.incr">1</stringProp>
-      <stringProp name="CounterConfig.name">page_number</stringProp>
-      <stringProp name="CounterConfig.format"/>
-      <boolProp name="CounterConfig.per_user">true</boolProp>
-      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
-    <hashTree/>
-  
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
-</TestFragmentController>
-    <hashTree>
-      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
-        <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
-        <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
-        <boolProp name="ForeachController.useSeparator">true</boolProp>
-        <stringProp name="ForeachController.startIndex">0</stringProp>
-        <stringProp name="ForeachController.endIndex">3</stringProp>
-      </ForeachController>
-      <hashTree>
-        <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
-          <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
-          <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
-          <boolProp name="ForeachController.useSeparator">true</boolProp>
-          <stringProp name="ForeachController.startIndex">0</stringProp>
-          <stringProp name="ForeachController.endIndex">2</stringProp>
-        </ForeachController>
-        <hashTree>
-          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-              <collectionProp name="Arguments.arguments">
-                <elementProp name="namespace" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_namespace}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">namespace</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">filters[placeholder]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">paging[pageSize]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="paging[current]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${page_number}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">paging[current]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="sorting[field]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_sort_field}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">sorting[field]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="sorting[direction]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_sort_order}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">sorting[direction]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="isAjax" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">true</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">isAjax</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-              </collectionProp>
-            </elementProp>
-            <stringProp name="HTTPSampler.domain"/>
-            <stringProp name="HTTPSampler.port"/>
-            <stringProp name="HTTPSampler.connect_timeout"/>
-            <stringProp name="HTTPSampler.response_timeout"/>
-            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-            <stringProp name="HTTPSampler.contentEncoding"/>
-            <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-            <boolProp name="HTTPSampler.monitor">false</boolProp>
-            <stringProp name="HTTPSampler.embedded_url_re"/>
-          </HTTPSamplerProxy>
-          <hashTree>
-            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-              <collectionProp name="Asserion.test_strings">
-                <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
-              </collectionProp>
-              <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-              <boolProp name="Assertion.assume_success">false</boolProp>
-              <intProp name="Assertion.test_type">2</intProp>
-            </ResponseAssertion>
-            <hashTree/>
-          </hashTree>
-        </hashTree>
-      </hashTree>
-    </hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
+    <hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
   </hashTree>
   </hashTree>
 
   
-    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Browse Order Grid" enabled="true">
+    <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Edit Order" enabled="true">
       <intProp name="ThroughputController.style">1</intProp>
       <boolProp name="ThroughputController.perThread">false</boolProp>
       <intProp name="ThroughputController.maxThroughput">1</intProp>
-      <stringProp name="ThroughputController.percentThroughput">${browseOrderGridPercentage}</stringProp>
+      <stringProp name="ThroughputController.percentThroughput">${adminEditOrderPercentage}</stringProp>
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
     <hashTree>
         <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
@@ -33506,7 +34018,7 @@ if (testLabel
         <hashTree/>
         <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
             <stringProp name="BeanShellSampler.query">
-                vars.put("testLabel", "Browse Order Grid");
+                vars.put("testLabel", "Admin Edit Order");
             </stringProp>
             <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
         </BeanShellSampler>
@@ -33566,31 +34078,36 @@ if (testLabel
     <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
     <hashTree/>
   
-    <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
-      <stringProp name="script">
-        vars.put("gridEntityType" , "Order");
-
-        pagesCount = parseInt(vars.get("orders_page_size")) || 20;
-        vars.put("grid_entity_page_size" , pagesCount);
-        vars.put("grid_namespace" , "sales_order_grid");
-        vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_orders_filter_text"));
-        vars.put("grid_filter_field", "status");
-
-        // set sort fields and sort directions
-        vars.put("grid_sort_field_1", "increment_id");
-        vars.put("grid_sort_field_2", "created_at");
-        vars.put("grid_sort_field_3", "billing_name");
-        vars.put("grid_sort_order_1", "asc");
-        vars.put("grid_sort_order_2", "desc");
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+    <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
+        <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
+    <hashTree>
+    
+    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
+      <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/get_admin_email.jmx</stringProp>
+      <stringProp name="BeanShellSampler.query">
+adminUserList = props.get("adminUserList");
+adminUser = adminUserList.poll();
+if (adminUser == null) {
+  SampleResult.setResponseMessage("adminUser list is empty");
+  SampleResult.setResponseData("adminUser list is empty","UTF-8");
+  IsSuccess=false;
+  SampleResult.setSuccessful(false);
+  SampleResult.setStopThread(true);
+}
+vars.put("admin_user", adminUser);
       </stringProp>
-      <stringProp name="scriptLanguage">javascript</stringProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_browse_orders_grid/setup.jmx</stringProp></JSR223PostProcessor>
+      <stringProp name="BeanShellSampler.filename"/>
+      <stringProp name="BeanShellSampler.parameters"/>
+      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
+    </BeanShellSampler>
     <hashTree/>
+  </hashTree>
   
-    <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/once_only_controller.jmx</stringProp>
-</OnceOnlyController>
-    <hashTree>
     <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments"/>
@@ -33693,74 +34210,421 @@ if (testLabel
       <stringProp name="HTTPSampler.embedded_url_re"/>
       <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
     </HTTPSamplerProxy>
-    <hashTree/>
+    <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
+            <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
+            <stringProp name="RegexExtractor.template">$1$</stringProp>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number">1</stringProp>
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
+        <hashTree/>
+    </hashTree>
+  </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
+    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
+</GenericController>
+    <hashTree>
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments"/>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="1204796042">Create New Order</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+  </hashTree>
+
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments">
+        <elementProp name="namespace" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">sales_order_grid</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">namespace</stringProp>
+        </elementProp>
+        <elementProp name="search" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value"/>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">search</stringProp>
+        </elementProp>
+        <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">true</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">filters[placeholder]</stringProp>
+        </elementProp>
+        <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">200</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">paging[pageSize]</stringProp>
+        </elementProp>
+        <elementProp name="paging[current]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">paging[current]</stringProp>
+        </elementProp>
+        <elementProp name="sorting[field]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">increment_id</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">sorting[field]</stringProp>
+        </elementProp>
+        <elementProp name="sorting[direction]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">desc</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">sorting[direction]</stringProp>
+        </elementProp>
+        <elementProp name="isAjax" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">true</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">isAjax</stringProp>
+        </elementProp>
+        <elementProp name="form_key" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${admin_form_key}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">form_key</stringProp>
+          <stringProp name="Argument.desc">false</stringProp>
+        </elementProp>
+        <elementProp name="filters[status]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">pending</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">filters[status]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="_" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">_</stringProp>
+        </elementProp>
+      </collectionProp>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="1637639774">totalRecords</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+  </hashTree>
+
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments">
+        <elementProp name="form_key" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${admin_form_key}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">form_key</stringProp>
+        </elementProp>
+        <elementProp name="namespace" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">sales_order_grid</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">namespace</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="search" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value"/>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">search</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="filters[placeholder]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">true</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">filters[placeholder]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="paging[pageSize]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">200</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">paging[pageSize]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="paging[current]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">paging[current]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="sorting[field]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">increment_id</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">sorting[field]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="sorting[direction]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">asc</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">sorting[direction]</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="isAjax" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">true</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">isAjax</stringProp>
+          <stringProp name="Argument.desc">true</stringProp>
+        </elementProp>
+        <elementProp name="filters[status]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">pending</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">filters[status]</stringProp>
+        </elementProp>
+        <elementProp name="_" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">_</stringProp>
+        </elementProp>
+      </collectionProp>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
+<hashTree>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="1637639774">totalRecords</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
+        <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">-1</stringProp>
+        <stringProp name="Scope.variable">simple_products</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
+        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+        <stringProp name="RegexExtractor.refname">order_ids</stringProp>
+        <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
+        <stringProp name="RegexExtractor.template">$1$</stringProp>
+        <stringProp name="RegexExtractor.default"/>
+        <stringProp name="RegexExtractor.match_number">-1</stringProp>
+        <stringProp name="Scope.variable">simple_products</stringProp>
+      </RegexExtractor>
+      <hashTree/>
+    </hashTree>
+
+      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
+        <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
+        <stringProp name="BeanShellSampler.query">
+  import java.util.ArrayList;
+  import java.util.HashMap;
+  import org.apache.jmeter.protocol.http.util.Base64Encoder;
+  import java.util.Random;
+
+  // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
+  int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
+
+
+  int clusterLength;
+  int threadsNumber = ctx.getThreadGroup().getNumThreads();
+  if (threadsNumber == 0) {
+      //Number of orders for one thread
+      clusterLength = ordersCount;
+  } else {
+      clusterLength = Math.round(ordersCount / threadsNumber);
+      if (clusterLength == 0) {
+          clusterLength = 1;
+      }
+  }
+
+  //Current thread number starts from 0
+  int currentThreadNum = ctx.getThreadNum();
+
+  //Index of the current product from the cluster
+  Random random = new Random();
+  int iterator = random.nextInt(clusterLength);
+  if (iterator == 0) {
+  	iterator = 1;
+  }
+
+  int i = clusterLength * currentThreadNum + iterator;
+
+  orderNumber = vars.get("order_numbers_" + i.toString());
+  orderId = vars.get("order_ids_" + i.toString());
+  vars.put("order_number", orderNumber);
+  vars.put("order_id", orderId);
+
+  </stringProp>
+    <stringProp name="BeanShellSampler.filename"/>
+    <stringProp name="BeanShellSampler.parameters"/>
+    <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+  </BeanShellSampler>
+  <hashTree/>
+
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments"/>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="2103620713">#${order_number}</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
+      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+      <stringProp name="RegexExtractor.refname">order_status</stringProp>
+      <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
+      <stringProp name="RegexExtractor.template">$1$</stringProp>
+      <stringProp name="RegexExtractor.default"/>
+      <stringProp name="RegexExtractor.match_number">1</stringProp>
+      <stringProp name="Scope.variable">simple_products</stringProp>
+    </RegexExtractor>
+    <hashTree/>
+  </hashTree>
+
+    <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+      <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
+      <boolProp name="IfController.evaluateAll">false</boolProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
+    <hashTree>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Comment" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="namespace" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_namespace}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
+          <elementProp name="history[status]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.value">pending</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
+            <stringProp name="Argument.name">history[status]</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
           </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+          <elementProp name="history[comment]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.value">Some text</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
+            <stringProp name="Argument.name">history[comment]</stringProp>
           </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
+          <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -33770,116 +34634,132 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/addComment/order_id/${order_id}/?isAjax=true</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_order/add_comment.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
-        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
-        <stringProp name="EXPECTED_VALUE">0</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">true</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
-        <stringProp name="VAR">entity_total_records</stringProp>
-        <stringProp name="JSONPATH">$.totalRecords</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
-        <stringProp name="cacheKey"/>
-        <stringProp name="filename"/>
-        <stringProp name="parameters"/>
-        <stringProp name="script">
-          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
-          var totalsRecord = parseInt(vars.get("entity_total_records"));
-          var pageCount = Math.round(totalsRecord/pageSize);
-
-          vars.put("grid_pages_count", pageCount);
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-      </JSR223PostProcessor>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="-2089278331">Not Notified</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
       <hashTree/>
     </hashTree>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments"/>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
+    <stringProp name="HTTPSampler.method">GET</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="-1233850814">Invoice Totals</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
+      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+      <stringProp name="RegexExtractor.refname">item_ids</stringProp>
+      <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
+      <stringProp name="RegexExtractor.template">$1$</stringProp>
+      <stringProp name="RegexExtractor.default"/>
+      <stringProp name="RegexExtractor.match_number">-1</stringProp>
+      <stringProp name="Scope.variable">simple_products</stringProp>
+    </RegexExtractor>
+    <hashTree/>
+  </hashTree>
+
+  <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
+    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+      <collectionProp name="Arguments.arguments">
+        <elementProp name="form_key" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">${admin_form_key}</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">form_key</stringProp>
+          <stringProp name="Argument.desc">false</stringProp>
+        </elementProp>
+        <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
+        </elementProp>
+        <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">1</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
+        </elementProp>
+        <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
+          <boolProp name="HTTPArgument.always_encode">true</boolProp>
+          <stringProp name="Argument.value">Invoiced</stringProp>
+          <stringProp name="Argument.metadata">=</stringProp>
+          <boolProp name="HTTPArgument.use_equals">true</boolProp>
+          <stringProp name="Argument.name">invoice[comment_text]</stringProp>
+        </elementProp>
+      </collectionProp>
+    </elementProp>
+    <stringProp name="HTTPSampler.domain"/>
+    <stringProp name="HTTPSampler.port"/>
+    <stringProp name="HTTPSampler.connect_timeout"/>
+    <stringProp name="HTTPSampler.response_timeout"/>
+    <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+    <stringProp name="HTTPSampler.contentEncoding"/>
+    <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
+    <stringProp name="HTTPSampler.method">POST</stringProp>
+    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+    <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+    <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+    <boolProp name="HTTPSampler.monitor">false</boolProp>
+    <stringProp name="HTTPSampler.embedded_url_re"/>
+  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
+  <hashTree>
+    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+      <collectionProp name="Asserion.test_strings">
+        <stringProp name="1740524604">The invoice has been created</stringProp>
+      </collectionProp>
+      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+      <boolProp name="Assertion.assume_success">false</boolProp>
+      <intProp name="Assertion.test_type">2</intProp>
+    </ResponseAssertion>
+    <hashTree/>
+  </hashTree>
+
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Start" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="namespace" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_namespace}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">1</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-        </collectionProp>
+        <collectionProp name="Arguments.arguments"/>
       </elementProp>
       <stringProp name="HTTPSampler.domain"/>
       <stringProp name="HTTPSampler.port"/>
@@ -33887,7 +34767,7 @@ if (testLabel
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/start/order_id/${order_id}/</stringProp>
       <stringProp name="HTTPSampler.method">GET</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -33895,122 +34775,50 @@ if (testLabel
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_order/shipment_start.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
-        <stringProp name="JSON_PATH">$.totalRecords</stringProp>
-        <stringProp name="EXPECTED_VALUE">0</stringProp>
-        <boolProp name="JSONVALIDATION">true</boolProp>
-        <boolProp name="EXPECT_NULL">false</boolProp>
-        <boolProp name="INVERT">true</boolProp>
-        <boolProp name="ISREGEX">true</boolProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
-      <hashTree/>
-      <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="Extract total records" enabled="true">
-        <stringProp name="VAR">entity_total_records</stringProp>
-        <stringProp name="JSONPATH">$.totalRecords</stringProp>
-        <stringProp name="DEFAULT"/>
-        <stringProp name="VARIABLE"/>
-        <stringProp name="SUBJECT">BODY</stringProp>
-      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
-      <hashTree/>
-      <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
-        <stringProp name="parameters"/>
-        <stringProp name="filename"/>
-        <stringProp name="script">
-          var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
-var totalsRecord = parseInt(vars.get("entity_total_records"));
-var pageCount = Math.round(totalsRecord/pageSize);
-
-vars.put("grid_pages_count_filtered", pageCount);
-        </stringProp>
-        <stringProp name="scriptLanguage">javascript</stringProp>
-      </JSR223PostProcessor>
+      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+        <collectionProp name="Asserion.test_strings">
+          <stringProp name="304100442">New Shipment</stringProp>
+        </collectionProp>
+        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+        <boolProp name="Assertion.assume_success">false</boolProp>
+        <intProp name="Assertion.test_type">2</intProp>
+      </ResponseAssertion>
       <hashTree/>
     </hashTree>
-  </hashTree>
-  
-    <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/simple_controller.jmx</stringProp>
-</GenericController>
-    <hashTree>
-    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
-      <stringProp name="CounterConfig.start">1</stringProp>
-      <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
-      <stringProp name="CounterConfig.incr">1</stringProp>
-      <stringProp name="CounterConfig.name">page_number</stringProp>
-      <stringProp name="CounterConfig.format"/>
-      <boolProp name="CounterConfig.per_user">true</boolProp>
-      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
-    <hashTree/>
   
-    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Submit" enabled="true">
       <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
         <collectionProp name="Arguments.arguments">
-          <elementProp name="namespace" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_namespace}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">namespace</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="search" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value"/>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">search</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">filters[placeholder]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-            <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-            <stringProp name="Argument.metadata">=</stringProp>
-            <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[pageSize]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
-          </elementProp>
-          <elementProp name="paging[current]" elementType="HTTPArgument">
+          <elementProp name="form_key" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">${page_number}</stringProp>
+            <stringProp name="Argument.value">${admin_form_key}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">paging[current]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
+            <stringProp name="Argument.name">form_key</stringProp>
+            <stringProp name="Argument.desc">false</stringProp>
           </elementProp>
-          <elementProp name="sorting[field]" elementType="HTTPArgument">
+          <elementProp name="shipment[items][${item_ids_1}]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">entity_id</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[field]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
+            <stringProp name="Argument.name">shipment[items][${item_ids_1}]</stringProp>
           </elementProp>
-          <elementProp name="sorting[direction]" elementType="HTTPArgument">
+          <elementProp name="shipment[items][${item_ids_2}]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">asc</stringProp>
+            <stringProp name="Argument.value">1</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">sorting[direction]</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
+            <stringProp name="Argument.name">shipment[items][${item_ids_2}]</stringProp>
           </elementProp>
-          <elementProp name="isAjax" elementType="HTTPArgument">
+          <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
             <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
+            <stringProp name="Argument.value">Shipped</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
             <boolProp name="HTTPArgument.use_equals">true</boolProp>
-            <stringProp name="Argument.name">isAjax</stringProp>
-            <stringProp name="Argument.desc">true</stringProp>
+            <stringProp name="Argument.name">shipment[comment_text]</stringProp>
           </elementProp>
         </collectionProp>
       </elementProp>
@@ -34020,19 +34828,19 @@ vars.put("grid_pages_count_filtered", pageCount);
       <stringProp name="HTTPSampler.response_timeout"/>
       <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
       <stringProp name="HTTPSampler.contentEncoding"/>
-      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
+      <stringProp name="HTTPSampler.method">POST</stringProp>
       <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
       <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
       <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
       <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
       <boolProp name="HTTPSampler.monitor">false</boolProp>
       <stringProp name="HTTPSampler.embedded_url_re"/>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_edit_order/shipment_submit.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
       <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
         <collectionProp name="Asserion.test_strings">
-          <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
+          <stringProp name="-2089453199">The shipment has been created</stringProp>
         </collectionProp>
         <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
         <boolProp name="Assertion.assume_success">false</boolProp>
@@ -34040,136 +34848,40 @@ vars.put("grid_pages_count_filtered", pageCount);
       </ResponseAssertion>
       <hashTree/>
     </hashTree>
+  </hashTree>
+  </hashTree>
   
-    <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
-      <stringProp name="CounterConfig.start">1</stringProp>
-      <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
-      <stringProp name="CounterConfig.incr">1</stringProp>
-      <stringProp name="CounterConfig.name">page_number</stringProp>
-      <stringProp name="CounterConfig.format"/>
-      <boolProp name="CounterConfig.per_user">true</boolProp>
-      <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
-    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
-    <hashTree/>
-  
-    <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
-  <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
-</TestFragmentController>
+    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
+      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="HTTPSampler.domain"/>
+      <stringProp name="HTTPSampler.port"/>
+      <stringProp name="HTTPSampler.connect_timeout"/>
+      <stringProp name="HTTPSampler.response_timeout"/>
+      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
+      <stringProp name="HTTPSampler.contentEncoding"/>
+      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
+      <stringProp name="HTTPSampler.method">GET</stringProp>
+      <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+      <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+      <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+      <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+      <boolProp name="HTTPSampler.monitor">false</boolProp>
+      <stringProp name="HTTPSampler.embedded_url_re"/>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
     <hashTree>
-      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
-        <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
-        <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
-        <boolProp name="ForeachController.useSeparator">true</boolProp>
-        <stringProp name="ForeachController.startIndex">0</stringProp>
-        <stringProp name="ForeachController.endIndex">3</stringProp>
-      </ForeachController>
-      <hashTree>
-        <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
-          <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
-          <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
-          <boolProp name="ForeachController.useSeparator">true</boolProp>
-          <stringProp name="ForeachController.startIndex">0</stringProp>
-          <stringProp name="ForeachController.endIndex">2</stringProp>
-        </ForeachController>
-        <hashTree>
-          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
-              <collectionProp name="Arguments.arguments">
-                <elementProp name="namespace" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_namespace}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">namespace</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="filters[placeholder]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-            <stringProp name="Argument.value">true</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">filters[placeholder]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="paging[pageSize]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">paging[pageSize]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="paging[current]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${page_number}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">paging[current]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="sorting[field]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_sort_field}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">sorting[field]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="sorting[direction]" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">${grid_sort_order}</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">sorting[direction]</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-                <elementProp name="isAjax" elementType="HTTPArgument">
-                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
-                  <stringProp name="Argument.value">true</stringProp>
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">isAjax</stringProp>
-                  <stringProp name="Argument.desc">false</stringProp>
-                </elementProp>
-              </collectionProp>
-            </elementProp>
-            <stringProp name="HTTPSampler.domain"/>
-            <stringProp name="HTTPSampler.port"/>
-            <stringProp name="HTTPSampler.connect_timeout"/>
-            <stringProp name="HTTPSampler.response_timeout"/>
-            <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
-            <stringProp name="HTTPSampler.contentEncoding"/>
-            <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-            <boolProp name="HTTPSampler.monitor">false</boolProp>
-            <stringProp name="HTTPSampler.embedded_url_re"/>
-          </HTTPSamplerProxy>
-          <hashTree>
-            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
-              <collectionProp name="Asserion.test_strings">
-                <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
-              </collectionProp>
-              <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
-              <boolProp name="Assertion.assume_success">false</boolProp>
-              <intProp name="Assertion.test_type">2</intProp>
-            </ResponseAssertion>
-            <hashTree/>
-          </hashTree>
-        </hashTree>
-      </hashTree>
-    </hashTree>
+    
+    <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
+        <boolProp name="resetInterpreter">false</boolProp>
+        <stringProp name="parameters"/>
+        <stringProp name="filename"/>
+        <stringProp name="script">
+adminUserList = props.get("adminUserList");
+adminUserList.add(vars.get("admin_user"));
+        </stringProp>
+    <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
+    <hashTree/>
   </hashTree>
   </hashTree>
 
@@ -34270,17 +34982,6 @@ vars.put("grid_pages_count_filtered", pageCount);
         <boolProp name="CookieManager.clearEachIteration">true</boolProp>
       </CookieManager>
       <hashTree/>
-      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Clear properties" enabled="true">
-        <stringProp name="BeanShellSampler.query">props.remove("category_url_key");
-props.remove("category_name");
-props.remove("simple_products_list");
-props.remove("configurable_products_list");
-props.remove("customer_emails_list");</stringProp>
-        <stringProp name="BeanShellSampler.filename"/>
-        <stringProp name="BeanShellSampler.parameters"/>
-        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
-      </BeanShellSampler>
-      <hashTree/>
     </hashTree>
   
     <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="false">
diff --git a/setup/performance-toolkit/profiles/ce/extra_large.xml b/setup/performance-toolkit/profiles/ce/extra_large.xml
index 830d1d95d7d21a4505dcb35b289a7aabfc234360..44b3512090b12c59483db9e3dcd97048b57b19ef 100644
--- a/setup/performance-toolkit/profiles/ce/extra_large.xml
+++ b/setup/performance-toolkit/profiles/ce/extra_large.xml
@@ -7,6 +7,7 @@
 -->
 <config xmlns:xi="http://www.w3.org/2001/XInclude">
     <profile>
+        <admin_users>50</admin_users><!-- Number of admin users to generate -->
         <websites>5</websites> <!-- Number of websites to generate -->
         <store_groups>5</store_groups> <!--Number of stores-->
         <store_views>5</store_views> <!-- Number of store views -->
diff --git a/setup/performance-toolkit/profiles/ce/large.xml b/setup/performance-toolkit/profiles/ce/large.xml
index dd297b21d350357d4514e0340762c2d8eea6ab74..606c854d27adc2d72d05f53b00fe68e0e7888a44 100644
--- a/setup/performance-toolkit/profiles/ce/large.xml
+++ b/setup/performance-toolkit/profiles/ce/large.xml
@@ -7,6 +7,7 @@
 -->
 <config xmlns:xi="http://www.w3.org/2001/XInclude">
     <profile>
+        <admin_users>50</admin_users><!-- Number of admin users to generate -->
         <websites>5</websites> <!-- Number of websites to generate -->
         <store_groups>5</store_groups> <!--Number of stores-->
         <store_views>5</store_views> <!-- Number of store views -->
diff --git a/setup/performance-toolkit/profiles/ce/medium.xml b/setup/performance-toolkit/profiles/ce/medium.xml
index 896ab92d32f33828c9a093fb4c18a536950fd701..4f735ae4ac2d417cdc55a6953d25302528e0c659 100644
--- a/setup/performance-toolkit/profiles/ce/medium.xml
+++ b/setup/performance-toolkit/profiles/ce/medium.xml
@@ -7,6 +7,7 @@
 -->
 <config xmlns:xi="http://www.w3.org/2001/XInclude">
     <profile>
+        <admin_users>50</admin_users><!-- Number of admin users to generate -->
         <websites>3</websites> <!-- Number of websites to generate -->
         <store_groups>3</store_groups> <!--Number of stores-->
         <store_views>3</store_views> <!-- Number of store views -->
diff --git a/setup/performance-toolkit/profiles/ce/medium_msite.xml b/setup/performance-toolkit/profiles/ce/medium_msite.xml
index 245eed4c18fe1c2cd2be1c3f9aa3e5df8ed8a5ee..24d51d170fbc2265fd4dcfd90bffc7f05b2f4a35 100644
--- a/setup/performance-toolkit/profiles/ce/medium_msite.xml
+++ b/setup/performance-toolkit/profiles/ce/medium_msite.xml
@@ -7,6 +7,7 @@
 -->
 <config xmlns:xi="http://www.w3.org/2001/XInclude">
     <profile>
+        <admin_users>50</admin_users><!-- Number of admin users to generate -->
         <websites>25</websites> <!-- Number of websites to generate -->
         <store_groups>25</store_groups> <!--Number of stores-->
         <store_views>50</store_views> <!-- Number of store views -->
diff --git a/setup/performance-toolkit/profiles/ce/small.xml b/setup/performance-toolkit/profiles/ce/small.xml
index cbcb4764f0f894d04512387532aaf560927b0e65..270828c2a2c9d947afae6a39d522042bc26561c2 100644
--- a/setup/performance-toolkit/profiles/ce/small.xml
+++ b/setup/performance-toolkit/profiles/ce/small.xml
@@ -7,6 +7,7 @@
 -->
 <config xmlns:xi="http://www.w3.org/2001/XInclude">
     <profile>
+        <admin_users>50</admin_users><!-- Number of admin users to generate -->
         <websites>1</websites> <!-- Number of websites to generate -->
         <store_groups>1</store_groups> <!--Number of stores-->
         <store_views>1</store_views> <!-- Number of store views -->
diff --git a/setup/src/Magento/Setup/Console/Command/GenerateFixturesCommand.php b/setup/src/Magento/Setup/Console/Command/GenerateFixturesCommand.php
index eb0efd3983fa22411d8ab3ff4210a959f0ce5091..c817d2e07660a35e478747f5156a0d21225089a8 100644
--- a/setup/src/Magento/Setup/Console/Command/GenerateFixturesCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/GenerateFixturesCommand.php
@@ -17,6 +17,7 @@ use Symfony\Component\Console\Output\OutputInterface;
 
 /**
  * Command generates fixtures for performance tests
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 class GenerateFixturesCommand extends Command
 {
@@ -83,35 +84,33 @@ class GenerateFixturesCommand extends Command
                 $fixture->printInfo($output);
             }
 
+            /** @var \Magento\Setup\Fixtures\ConfigsApplyFixture $configFixture */
+            $configFixture = $fixtureModel
+                ->getFixtureByName(\Magento\Setup\Fixtures\ConfigsApplyFixture::class);
+            $configFixture && $this->executeFixture($configFixture, $output);
+
             /** @var $config \Magento\Indexer\Model\Config */
             $config = $fixtureModel->getObjectManager()->get(\Magento\Indexer\Model\Config::class);
             $indexerListIds = $config->getIndexers();
             /** @var $indexerRegistry \Magento\Framework\Indexer\IndexerRegistry */
             $indexerRegistry = $fixtureModel->getObjectManager()
                 ->create(\Magento\Framework\Indexer\IndexerRegistry::class);
-            $indexersState = [];
+
             foreach ($indexerListIds as $indexerId) {
                 $indexer = $indexerRegistry->get($indexerId['indexer_id']);
-                $indexersState[$indexerId['indexer_id']] = $indexer->isScheduled();
                 $indexer->setScheduled(true);
             }
 
             foreach ($fixtureModel->getFixtures() as $fixture) {
-                $output->write('<info>' . $fixture->getActionTitle() . '... </info>');
-                $startTime = microtime(true);
-                $fixture->execute($output);
-                $endTime = microtime(true);
-                $resultTime = $endTime - $startTime;
-                $output->writeln('<info> done in ' . gmdate('H:i:s', $resultTime) . '</info>');
+                $this->executeFixture($fixture, $output);
             }
 
             $this->clearChangelog();
 
-            foreach ($indexerListIds as $indexerId) {
-                /** @var $indexer \Magento\Indexer\Model\Indexer */
-                $indexer = $indexerRegistry->get($indexerId['indexer_id']);
-                $indexer->setScheduled($indexersState[$indexerId['indexer_id']]);
-            }
+            /** @var \Magento\Setup\Fixtures\IndexersStatesApplyFixture $indexerFixture */
+            $indexerFixture = $fixtureModel
+                ->getFixtureByName(\Magento\Setup\Fixtures\IndexersStatesApplyFixture::class);
+            $indexerFixture && $this->executeFixture($indexerFixture, $output);
 
             if (!$input->getOption(self::SKIP_REINDEX_OPTION)) {
                 $fixtureModel->reindex($output);
@@ -148,4 +147,14 @@ class GenerateFixturesCommand extends Command
             }
         }
     }
+
+    private function executeFixture(\Magento\Setup\Fixtures\Fixture $fixture, OutputInterface $output)
+    {
+        $output->write('<info>' . $fixture->getActionTitle() . '... </info>');
+        $startTime = microtime(true);
+        $fixture->execute($output);
+        $endTime = microtime(true);
+        $resultTime = $endTime - $startTime;
+        $output->writeln('<info> done in ' . gmdate('H:i:s', $resultTime) . '</info>');
+    }
 }
diff --git a/setup/src/Magento/Setup/Fixtures/ConfigsApplyFixture.php b/setup/src/Magento/Setup/Fixtures/ConfigsApplyFixture.php
index d65441f878cc5ad09e70db88f9e7b4fda7d6ac38..6c6fdbd9fa6f8aaaf1e909f565fe7742bc816630 100644
--- a/setup/src/Magento/Setup/Fixtures/ConfigsApplyFixture.php
+++ b/setup/src/Magento/Setup/Fixtures/ConfigsApplyFixture.php
@@ -14,7 +14,7 @@ class ConfigsApplyFixture extends Fixture
     /**
      * @var int
      */
-    protected $priority = 0;
+    protected $priority = -1;
 
     /**
      * {@inheritdoc}
@@ -41,8 +41,13 @@ class ConfigsApplyFixture extends Fixture
                 ->setValue($config['value'])
                 ->save();
         }
-        $this->fixtureModel->getObjectManager()->get(\Magento\Framework\App\CacheInterface::class)
+        $this->fixtureModel->getObjectManager()
+            ->get(\Magento\Framework\App\CacheInterface::class)
             ->clean([\Magento\Framework\App\Config::CACHE_TAG]);
+
+        $this->fixtureModel->getObjectManager()
+            ->get(\Magento\Config\App\Config\Type\System::class)
+            ->clean();
     }
 
     /**
diff --git a/setup/src/Magento/Setup/Fixtures/FixtureModel.php b/setup/src/Magento/Setup/Fixtures/FixtureModel.php
index 6466bf73310d76c0fceac1e49752312bcdbaac70..104c9cb343216b749e847b1700759befce21e3d8 100644
--- a/setup/src/Magento/Setup/Fixtures/FixtureModel.php
+++ b/setup/src/Magento/Setup/Fixtures/FixtureModel.php
@@ -10,6 +10,7 @@
 namespace Magento\Setup\Fixtures;
 
 use Magento\Indexer\Console\Command\IndexerReindexCommand;
+use Magento\Setup\Exception;
 use Symfony\Component\Console\Input\ArrayInput;
 use Symfony\Component\Console\Output\OutputInterface;
 
@@ -47,6 +48,13 @@ class FixtureModel
      */
     protected $fixtures = [];
 
+    /**
+     * List of fixtures indexed by class names
+     *
+     * @var \Magento\Setup\Fixtures\Fixture[]
+     */
+    private $fixturesByNames = [];
+
     /**
      * Parameters labels
      *
@@ -109,12 +117,18 @@ class FixtureModel
                     'fixtureModel' => $this,
                 ]
             );
+
             if (isset($this->fixtures[$fixture->getPriority()])) {
                 throw new \InvalidArgumentException(
                     sprintf('Duplicate priority %d in fixture %s', $fixture->getPriority(), $type)
                 );
             }
-            $this->fixtures[$fixture->getPriority()] = $fixture;
+
+            if ($fixture->getPriority() >= 0) {
+                $this->fixtures[$fixture->getPriority()] = $fixture;
+            }
+
+            $this->fixturesByNames[get_class($fixture)] = $fixture;
         }
 
         ksort($this->fixtures);
@@ -142,6 +156,21 @@ class FixtureModel
         return $this->fixtures;
     }
 
+    /**
+     * Returns fixture by name
+     * @param $name string
+     * @return \Magento\Setup\Fixtures\Fixture
+     * @throws \Magento\Setup\Exception
+     */
+    public function getFixtureByName($name)
+    {
+        if (!array_key_exists($name, $this->fixturesByNames)) {
+            throw new Exception('Wrong fixture name');
+        }
+
+        return $this->fixturesByNames[$name];
+    }
+
     /**
      * Get object manager
      *
diff --git a/setup/src/Magento/Setup/Fixtures/IndexersStatesApplyFixture.php b/setup/src/Magento/Setup/Fixtures/IndexersStatesApplyFixture.php
index 7b5bd92663008358e8e87552efd8136166356508..b07ce33089814db2de4994c01ef9dd3805c37a9e 100644
--- a/setup/src/Magento/Setup/Fixtures/IndexersStatesApplyFixture.php
+++ b/setup/src/Magento/Setup/Fixtures/IndexersStatesApplyFixture.php
@@ -14,7 +14,7 @@ class IndexersStatesApplyFixture extends Fixture
     /**
      * @var int
      */
-    protected $priority = 170;
+    protected $priority = -1;
 
     /**
      * {@inheritdoc}
@@ -25,10 +25,18 @@ class IndexersStatesApplyFixture extends Fixture
         if (!isset($indexers["indexer"]) || empty($indexers["indexer"])) {
             return;
         }
+
         $this->fixtureModel->resetObjectManager();
-        foreach ($indexers["indexer"] as $indexer) {
-            $this->fixtureModel->indexersStates[$indexer['id']] = ($indexer['set_scheduled'] == "true");
+
+        /** @var $indexerRegistry \Magento\Framework\Indexer\IndexerRegistry */
+        $indexerRegistry = $this->fixtureModel->getObjectManager()
+            ->create(\Magento\Framework\Indexer\IndexerRegistry::class);
+
+        foreach ($indexers["indexer"] as $indexerConfig) {
+            $indexer = $indexerRegistry->get($indexerConfig['id']);
+            $indexer->setScheduled($indexerConfig['set_scheduled'] == "true");
         }
+
         $this->fixtureModel->getObjectManager()->get(\Magento\Framework\App\CacheInterface::class)
             ->clean([\Magento\Framework\App\Config::CACHE_TAG]);
     }
diff --git a/setup/src/Magento/Setup/Test/Unit/Fixtures/ConfigsApplyFixtureTest.php b/setup/src/Magento/Setup/Test/Unit/Fixtures/ConfigsApplyFixtureTest.php
index 7622347aebb937198aa9bcb32fc70777755ab87d..954ea4be82521fa2f761d70dd9da8e8653167cd5 100644
--- a/setup/src/Magento/Setup/Test/Unit/Fixtures/ConfigsApplyFixtureTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Fixtures/ConfigsApplyFixtureTest.php
@@ -33,21 +33,27 @@ class ConfigsApplyFixtureTest extends \PHPUnit\Framework\TestCase
         $cacheMock = $this->createMock(\Magento\Framework\App\Cache::class);
 
         $valueMock = $this->createMock(\Magento\Framework\App\Config::class);
+        $configMock = $this->createMock(\Magento\Config\App\Config\Type\System::class);
 
         $objectManagerMock = $this->createMock(\Magento\Framework\ObjectManager\ObjectManager::class);
-        $objectManagerMock->expects($this->once())
+        $objectManagerMock
             ->method('get')
-            ->will($this->returnValue($cacheMock));
+            ->willReturnMap([
+                [\Magento\Framework\App\CacheInterface::class, $cacheMock],
+                [\Magento\Config\App\Config\Type\System::class, $configMock]
+            ]);
 
         $this->fixtureModelMock
             ->expects($this->once())
             ->method('getValue')
             ->will($this->returnValue(['config' => $valueMock]));
         $this->fixtureModelMock
-            ->expects($this->once())
             ->method('getObjectManager')
             ->will($this->returnValue($objectManagerMock));
 
+        $cacheMock->method('clean');
+        $configMock->method('clean');
+
         $this->model->execute();
     }
 
diff --git a/setup/src/Magento/Setup/Test/Unit/Fixtures/IndexersStatesApplyFixtureTest.php b/setup/src/Magento/Setup/Test/Unit/Fixtures/IndexersStatesApplyFixtureTest.php
index 0298fc05116f6144362421148f87df3a2ae98ca8..3c8d30fb6dfccca141a7d7fdf11d229877c10065 100644
--- a/setup/src/Magento/Setup/Test/Unit/Fixtures/IndexersStatesApplyFixtureTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Fixtures/IndexersStatesApplyFixtureTest.php
@@ -30,11 +30,23 @@ class IndexersStatesApplyFixtureTest extends \PHPUnit\Framework\TestCase
     public function testExecute()
     {
         $cacheInterfaceMock = $this->createMock(\Magento\Framework\App\CacheInterface::class);
+        $indexerRegistryMock = $this->createMock(\Magento\Framework\Indexer\IndexerRegistry::class);
+        $indexerMock = $this->getMockForAbstractClass(\Magento\Framework\Indexer\IndexerInterface::class);
+
+        $indexerRegistryMock->expects($this->once())
+            ->method('get')
+            ->willReturn($indexerMock);
+
+        $indexerMock->expects($this->once())
+            ->method('setScheduled');
 
         $objectManagerMock = $this->createMock(\Magento\Framework\ObjectManager\ObjectManager::class);
         $objectManagerMock->expects($this->once())
             ->method('get')
             ->willReturn($cacheInterfaceMock);
+        $objectManagerMock->expects($this->once())
+            ->method('create')
+            ->willReturn($indexerRegistryMock);
 
         $this->fixtureModelMock
             ->expects($this->once())
@@ -43,7 +55,6 @@ class IndexersStatesApplyFixtureTest extends \PHPUnit\Framework\TestCase
                 'indexer' => ['id' => 1]
             ]);
         $this->fixtureModelMock
-            ->expects($this->once())
             ->method('getObjectManager')
             ->willReturn($objectManagerMock);
 
diff --git a/setup/view/magento/setup/readiness-check/progress.phtml b/setup/view/magento/setup/readiness-check/progress.phtml
index c1ac41c6b5f2eb0fdeaeb3398656305fe0538e99..eb9dd0ce9d1aa3575b32d4950c3e973dabce93c0 100755
--- a/setup/view/magento/setup/readiness-check/progress.phtml
+++ b/setup/view/magento/setup/readiness-check/progress.phtml
@@ -336,7 +336,7 @@
                 </div>
 
                 <p ng-show="componentDependency.expanded">For additional assistance, see
-                    <a href="http://devdocs.magento.com/guides/v2.0/install-gde/trouble/php/tshoot_php-set.html"
+                    <a href="http://devdocs.magento.com/guides/v2.2/install-gde/trouble/php/tshoot_php-set.html"
                        target="_blank">PHP settings check help
                     </a>.
                 </p>
@@ -392,7 +392,7 @@
 
                 <div class="readiness-check-side">
                     <p class="side-title">Need Help?</p>
-                    <a href="http://devdocs.magento.com/guides/v2.0/install-gde/system-requirements.html" target="_blank">PHP Extension Help</a>
+                    <a href="http://devdocs.magento.com/guides/v2.2/install-gde/system-requirements.html" target="_blank">PHP Extension Help</a>
                 </div>
 
                 <span class="readiness-check-icon icon-failed-round"></span>
@@ -413,7 +413,7 @@
                         <p>
                             The best way to resolve this is to install the correct missing extensions. The exact fix depends on our server, your host, and other system variables.
                             <br>
-                            Our <a href="http://devdocs.magento.com/guides/v2.0/install-gde/system-requirements.html" target="_blank">PHP extension help</a> can get you started.
+                            Our <a href="http://devdocs.magento.com/guides/v2.2/install-gde/system-requirements.html" target="_blank">PHP extension help</a> can get you started.
                         </p>
                         <p>
                             For additional assistance, contact your hosting provider.
@@ -477,7 +477,7 @@
 
             <div class="readiness-check-side">
                 <p class="side-title">Need Help?</p>
-                <a href="http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html" target="_blank">File Permission Help</a>
+                <a href="http://devdocs.magento.com/guides/v2.2/install-gde/prereq/file-system-perms.html" target="_blank">File Permission Help</a>
             </div>
 
             <span class="readiness-check-icon icon-failed-round"></span>
@@ -500,7 +500,7 @@
                         The best way to resolve this is to allow write permissions for files in the following Magento directories and subdirectories. The exact fix depends on your server, your host,
                         and other system variables.
                         <br>
-                        For help, see our <a href="http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html" target="_blank">File Permission Help</a> or call your hosting provider.
+                        For help, see our <a href="http://devdocs.magento.com/guides/v2.2/install-gde/prereq/file-system-perms.html" target="_blank">File Permission Help</a> or call your hosting provider.
                     </p>
                     <ul class="list" ng-show="permissions.expanded" ng-init="showDetails=false">
                         <li