Index: core/install/install_schema.sql
===================================================================
--- core/install/install_schema.sql
+++ core/install/install_schema.sql
@@ -1430,3 +1430,13 @@
   TransitionEffectCustom varchar(255) NOT NULL DEFAULT '',
   PRIMARY KEY (PromoBlockGroupId)
 );
+
+CREATE TABLE ExportUserPresets (
+  Id int NOT NULL AUTO_INCREMENT,
+  PortalUserId int NULL DEFAULT NULL,
+  ItemPrefix varchar(100) NOT NULL DEFAULT '',
+  PresetName varchar(255) NOT NULL DEFAULT '',
+  PresetData text NULL DEFAULT NULL,
+  UNIQUE KEY General (PortalUserId, ItemPrefix, PresetName),
+  PRIMARY KEY (Id)
+);
Index: core/install/remove_schema.sql
===================================================================
--- core/install/remove_schema.sql
+++ core/install/remove_schema.sql
@@ -77,3 +77,4 @@
 DROP TABLE CurlLog;
 DROP TABLE PromoBlocks;
 DROP TABLE PromoBlockGroups;
+DROP TABLE ExportUserPresets;
Index: core/install/upgrades.php
===================================================================
--- core/install/upgrades.php
+++ core/install/upgrades.php
@@ -2368,6 +2368,36 @@
 		public function Upgrade_5_2_2_B3($mode)
 		{
 			if ( $mode != 'before' ) {
+				$sql = 'SELECT VariableValue, PortalUserId
+			 			FROM ' . TABLE_PREFIX . 'UserPersistentSessionData
+			 			WHERE VariableName = "export_settings"';
+				$variable_values = $this->Conn->GetColIterator($sql, 'PortalUserId');
+
+				foreach ( $variable_values as $user_id => $variable_value ) {
+					if ( !kUtil::IsSerialized($variable_value) ) {
+						continue;
+					}
+
+					$variable_value = unserialize($variable_value);
+
+					foreach ( $variable_value as $prefix => $prefix_export_settings ) {
+						foreach ( $prefix_export_settings as $name => $export_settings ) {
+							$fields_hash = array(
+								'PortalUserId' => $user_id,
+								'ItemPrefix' => $prefix,
+								'PresetName' => $name,
+								'PresetData' => json_encode($export_settings),
+							);
+							$this->Conn->doInsert($fields_hash, TABLE_PREFIX . 'ExportUserPresets', 'REPLACE');
+						}
+					}
+				}
+
+				$sql = 'DELETE
+						FROM ' . TABLE_PREFIX . 'UserPersistentSessionData
+						WHERE VariableName = "export_settings"';
+				$this->Conn->Query($sql);
+
 				return;
 			}
 
Index: core/kernel/db/db_event_handler.php
===================================================================
--- core/kernel/db/db_event_handler.php
+++ core/kernel/db/db_event_handler.php
@@ -131,6 +131,7 @@
 				'OnPreCreate' => Array ('self' => 'add|add.pending', 'subitem' => 'edit|edit.pending'),
 				'OnEdit' => Array ('self' => 'edit|edit.pending', 'subitem' => 'edit|edit.pending'),
 
+				'OnDeleteExportPreset' => array('self' => 'view'),
 				'OnExport' => Array ('self' => 'view|advanced:export'),
 				'OnExportBegin' => Array ('self' => 'view|advanced:export'),
 				'OnExportProgress' => Array ('self' => 'view|advanced:export'),
@@ -3086,32 +3087,16 @@
 				return ;
 			}
 
-			$preset_key = $field_values['ExportPresets'];
-			$export_settings = $this->Application->RecallPersistentVar('export_settings');
-
-			if ( !$export_settings ) {
-				return ;
-			}
-
-			$export_settings = unserialize($export_settings);
-
-			if ( !isset($export_settings[$event->Prefix]) ) {
-				return ;
-			}
-
-			$to_delete = '';
-
-			foreach ($export_settings[$event->Prefix] as $key => $val) {
-				if ( implode('|', $val['ExportColumns']) == $preset_key ) {
-					$to_delete = $key;
-					break;
-				}
-			}
+			$where_clause = array(
+				'ItemPrefix = ' . $this->Conn->qstr($event->Prefix),
+				'PortalUserId = ' . $this->Application->RecallVar('user_id'),
+				'PresetName = ' . $this->Conn->qstr($this->Application->GetVar('delete_preset_name')),
+			);
 
-			if ( $to_delete ) {
-				unset($export_settings[$event->Prefix][$to_delete]);
-				$this->Application->StorePersistentVar('export_settings', serialize($export_settings));
-			}
+			$sql = 'DELETE
+					FROM ' . TABLE_PREFIX . 'ExportUserPresets
+					WHERE (' . implode(') AND (', $where_clause) . ')';
+			$this->Conn->Query($sql);
 		}
 
 		/**
Index: core/units/helpers/cat_dbitem_export_helper.php
===================================================================
--- core/units/helpers/cat_dbitem_export_helper.php
+++ core/units/helpers/cat_dbitem_export_helper.php
@@ -1350,22 +1350,24 @@
 			$object = $event->getObject(Array ('skip_autoload' => true));
 
 			$options = $object->GetFieldOptions('ExportPresets');
-			$export_settings = $this->Application->RecallPersistentVar('export_settings');
+			$where_clause = array(
+				'ItemPrefix = ' . $this->Conn->qstr($event->Prefix),
+				'PortalUserId = ' . $this->Application->RecallVar('user_id'),
+			);
+			$sql = 'SELECT PresetData, PresetName
+					FROM ' . TABLE_PREFIX . 'ExportUserPresets
+					WHERE (' . implode(') AND (', $where_clause) . ')';
+			$export_settings = $this->Conn->GetCol($sql, 'PresetName');
 
 			if ( !$export_settings ) {
 				return;
 			}
 
-			$export_settings = unserialize($export_settings);
-
-			if ( !isset($export_settings[$event->Prefix]) ) {
-				return;
-			}
-
 			$export_presets = array ('' => '');
 
-			foreach ($export_settings[$event->Prefix] as $key => $val) {
-				$export_presets[implode('|', $val['ExportColumns'])] = $key;
+			foreach ( $export_settings as $name => $data ) {
+				$data = json_decode($data, true);
+				$export_presets[implode('|', $data['ExportColumns'])] = $name;
 			}
 
 			$options['options'] = $export_presets;
@@ -1488,12 +1490,13 @@
 
 			if ( $this->verifyOptions($event) ) {
 				if ( $this->_getExportSavePreset($object) ) {
-					$name = $object->GetDBField('ExportPresetName');
-
-					$export_settings = $this->Application->RecallPersistentVar('export_settings');
-					$export_settings = $export_settings ? unserialize($export_settings) : array ();
-					$export_settings[$event->Prefix][$name] = $field_values;
-					$this->Application->StorePersistentVar('export_settings', serialize($export_settings));
+					$fields_hash = array(
+						'PortalUserId' => $this->Application->RecallVar('user_id'),
+						'ItemPrefix' => $event->Prefix,
+						'PresetName' => $object->GetDBField('ExportPresetName'),
+						'PresetData' => json_encode($field_values),
+					);
+					$this->Conn->doInsert($fields_hash, TABLE_PREFIX . 'ExportUserPresets', 'REPLACE');
 				}
 
 				$progress_t = $this->Application->RecallVar('export_progress_t');
Index: modules/in-commerce/admin_templates/orders/export/export.tpl
===================================================================
--- modules/in-commerce/admin_templates/orders/export/export.tpl
+++ modules/in-commerce/admin_templates/orders/export/export.tpl
@@ -101,8 +101,16 @@
 
 	function delete_preset()
 	{
+		var presets = document.getElementById('<inp2:ord.export_InputName field="ExportPresets"/>'),
+			delete_preset_name = presets.options[presets.selectedIndex].text;
+
+		if ( delete_preset_name === '' ) {
+			return;
+		}
+
 		if (!confirm('<inp2:m_Phrase label="la_ConfirmDeleteExportPreset" js_escape="1"/>')) return;
 		var $kf = document.getElementById('kernel_form');
+		set_hidden_field('delete_preset_name', delete_preset_name);
 		tmp = $kf.elements['events[ord.export]'].value;
 		$kf.elements['events[ord.export]'].value = 'OnDeleteExportPreset';
 		Request.method = 'POST';
@@ -113,7 +121,7 @@
 
 			for (i=0; i< presets.options.length; i++) {
 				if (presets.options[i].selected) {
-					presets.options.remove[i];
+					presets.options[i].remove();
 				}
 			}
 			presets.options[0].selected = true;
@@ -168,4 +176,4 @@
 
 </script>
 
-<inp2:m_include t="incs/footer"/>
\ No newline at end of file
+<inp2:m_include t="incs/footer"/>