diff --git a/plugins/ordernumber_shoppergroups/Makefile b/plugins/ordernumber_shoppergroups/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..1cbda5d07cab4f7d10102dd408b771fb81e1993b
--- /dev/null
+++ b/plugins/ordernumber_shoppergroups/Makefile
@@ -0,0 +1,20 @@
+BASE=ordernumber_shoppergroups
+PLUGINTYPE=vmshopper
+ZIPBASE=opentools_vmshopper
+VERSION=1.0
+
+PLUGINFILES=$(BASE).php $(BASE).script.php $(BASE).xml index.html
+
+TRANSLATIONS=$(call wildcard,language/en*/*.plg_$(PLUGINTYPE)_$(BASE).*ini) 
+INDEXFILES=language/index.html $(call wildcard,language/**/index.html)
+FIELDS=$(call wildcard,fields/*)
+ZIPFILE=plg_$(ZIPBASE)_$(BASE)_v$(VERSION).zip
+
+all: zip
+
+zip: $(PLUGINFILES) $(TRANSLATIONS) $(ADVANCEDFILES) $(INDEXFILES)
+	@echo "Packing all files into distribution file $(ZIPFILE):"
+	@zip -r $(ZIPFILE) $(PLUGINFILES) $(TRANSLATIONS) $(INDEXFILES) $(FIELDS)
+
+clean:
+	rm -f $(ZIPFILE)
diff --git a/plugins/ordernumber_shoppergroups/fields/index.html b/plugins/ordernumber_shoppergroups/fields/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/plugins/ordernumber_shoppergroups/fields/vmshoppergroup.php b/plugins/ordernumber_shoppergroups/fields/vmshoppergroup.php
new file mode 100644
index 0000000000000000000000000000000000000000..c374ddffe10895d1bba68d5f9fd24d31cef2cbab
--- /dev/null
+++ b/plugins/ordernumber_shoppergroups/fields/vmshoppergroup.php
@@ -0,0 +1,55 @@
+<?php
+defined('_JEXEC') or die();
+/**
+ *
+ * @package    VirtueMart
+ * @subpackage Plugins  - Elements
+ * @author Valérie Isaksen
+ * @link http://www.virtuemart.net
+ * @copyright ${PHING.VM.COPYRIGHT}
+ * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
+ * VirtueMart is free software. This version may have been modified pursuant
+ * to the GNU General Public License, and as distributed it includes or
+ * is derivative of works licensed under the GNU General Public License or
+ * other free or open source software licenses.
+ * @version $Id$
+ */
+JFormHelper::loadFieldClass('list');
+jimport('joomla.form.formfield');
+if (!class_exists( 'VmConfig' )) 
+    require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php');
+VmConfig::loadConfig();
+
+class JFormFieldVmShopperGroup extends JFormFieldList {
+
+	/**
+	 * The form field type.
+	 *
+	 * @var    string
+	 * @since  11.1
+	 */
+	var $type = 'vmShopperGroup';
+
+	protected function getOptions() {
+		VmConfig::loadJLang('com_virtuemart_orders', TRUE);
+
+		$options = array();
+		$db = JFactory::getDBO();
+
+		$query = 'SELECT `virtuemart_shoppergroup_id` AS value, `shopper_group_name` AS text
+                 FROM `#__virtuemart_shoppergroups`
+                 WHERE `virtuemart_vendor_id` = 1
+                 ORDER BY `ordering` ASC, `virtuemart_shoppergroup_id` ASC ';
+
+		$db->setQuery($query);
+		$values = $db->loadObjectList();
+        $options[] = JHtml::_('select.option', -1, vmText::_('(No shopper group set)'));
+        $options[] = JHtml::_('select.option', 0, vmText::_('(Any group / set default)'));
+		foreach ($values as $value) {
+			$options[] = JHtml::_('select.option', $value->value, vmText::_($value->text));
+		}
+
+		return $options;
+	}
+
+}
\ No newline at end of file
diff --git a/plugins/ordernumber_shoppergroups/index.html b/plugins/ordernumber_shoppergroups/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/plugins/ordernumber_shoppergroups/language/en-GB/en-GB.plg_vmshopper_ordernumber_shoppergroups.ini b/plugins/ordernumber_shoppergroups/language/en-GB/en-GB.plg_vmshopper_ordernumber_shoppergroups.ini
new file mode 100644
index 0000000000000000000000000000000000000000..65fe85dd2d1379045766ddebdc1a97864600fdfc
--- /dev/null
+++ b/plugins/ordernumber_shoppergroups/language/en-GB/en-GB.plg_vmshopper_ordernumber_shoppergroups.ini
@@ -0,0 +1,19 @@
+; VM Ordernumber plugin: Provide variables derived from the shopper groups
+; Copyright (C)  2014 Reinhold Kainhofer, Open Tools. All rights reserved.
+; License http://www.gnu.org/licenses/gpl.html GNU/GPL
+; Note : All ini files need to be saved as UTF-8 - No BOM
+VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS="VM Ordernumbers - Shoppergroup-derived variables"
+VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS_DESC="This plugin provides variables for the Ordernumber plugin that are derived from the shopper's shopper group."
+
+PLG_ORDERNUMBER_SHOPPERGROUPS_FIELDSET="Configuration"
+
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP1HEADER="<b>Shopper group 1</b>"
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP2HEADER="<b>Shopper group 2</b>"
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP3HEADER="<b>Shopper group 3</b>"
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP4HEADER="<b>Shopper group 4</b>"
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP5HEADER="<b>Shopper group 5</b>"
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP6HEADER="<b>Shopper group 6</b>"
+
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP="Shopper Group"
+PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE="Format Variable Name"
+PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE="Value of the Variable"
diff --git a/plugins/ordernumber_shoppergroups/language/en-GB/en-GB.plg_vmshopper_ordernumber_shoppergroups.sys.ini b/plugins/ordernumber_shoppergroups/language/en-GB/en-GB.plg_vmshopper_ordernumber_shoppergroups.sys.ini
new file mode 100644
index 0000000000000000000000000000000000000000..65fe85dd2d1379045766ddebdc1a97864600fdfc
--- /dev/null
+++ b/plugins/ordernumber_shoppergroups/language/en-GB/en-GB.plg_vmshopper_ordernumber_shoppergroups.sys.ini
@@ -0,0 +1,19 @@
+; VM Ordernumber plugin: Provide variables derived from the shopper groups
+; Copyright (C)  2014 Reinhold Kainhofer, Open Tools. All rights reserved.
+; License http://www.gnu.org/licenses/gpl.html GNU/GPL
+; Note : All ini files need to be saved as UTF-8 - No BOM
+VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS="VM Ordernumbers - Shoppergroup-derived variables"
+VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS_DESC="This plugin provides variables for the Ordernumber plugin that are derived from the shopper's shopper group."
+
+PLG_ORDERNUMBER_SHOPPERGROUPS_FIELDSET="Configuration"
+
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP1HEADER="<b>Shopper group 1</b>"
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP2HEADER="<b>Shopper group 2</b>"
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP3HEADER="<b>Shopper group 3</b>"
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP4HEADER="<b>Shopper group 4</b>"
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP5HEADER="<b>Shopper group 5</b>"
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP6HEADER="<b>Shopper group 6</b>"
+
+PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP="Shopper Group"
+PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE="Format Variable Name"
+PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE="Value of the Variable"
diff --git a/plugins/ordernumber_shoppergroups/language/en-GB/index.html b/plugins/ordernumber_shoppergroups/language/en-GB/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..2efb97f319a35f6bd80f1751134ed71ec11888eb
--- /dev/null
+++ b/plugins/ordernumber_shoppergroups/language/en-GB/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><title></title>
diff --git a/plugins/ordernumber_shoppergroups/language/index.html b/plugins/ordernumber_shoppergroups/language/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..2efb97f319a35f6bd80f1751134ed71ec11888eb
--- /dev/null
+++ b/plugins/ordernumber_shoppergroups/language/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><title></title>
diff --git a/plugins/ordernumber_shoppergroups/ordernumber_shoppergroups.php b/plugins/ordernumber_shoppergroups/ordernumber_shoppergroups.php
new file mode 100644
index 0000000000000000000000000000000000000000..a15ac939caa00a2c2004ec00d52b16d25407bb8e
--- /dev/null
+++ b/plugins/ordernumber_shoppergroups/ordernumber_shoppergroups.php
@@ -0,0 +1,70 @@
+<?php
+
+defined ('_JEXEC') or die('Restricted access');
+
+/**
+ * Plugin providing Custom variables for the VM Ordernumber plugin
+ *
+ * @subpackage Plugins - vm ordernumber
+ * @copyright Copyright (C) 2014 Reinhold Kainhofer, office@open-tools.net
+ * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
+ * VirtueMart is free software. This version may have been modified pursuant
+ * to the GNU General Public License, and as distributed it includes or
+ * is derivative of works licensed under the GNU General Public License or
+ * other free or open source software licenses.
+ * See administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
+ *
+ * http://open-tools.net/
+ *
+ */
+if (!class_exists('vmShopperPlugin')) 
+    require(JPATH_VM_PLUGINS . DS . 'vmshopperplugin.php');
+
+/** Extension plugin for the Odernumber plugin for VirtueMart
+ */
+class plgVmShopperOrderNumber_ShopperGroups extends VmShopperPlugin {
+    public function plgVmOnUpdateOrderBEShopper($_orderID) {}
+    
+	/**  Trigger to add variables to be used in the number formats
+	  *  You can add new variables to the $cartvals array or modify existing ones. They will be directly 
+	  *  available in all formats. This trigger will be called whenever the ordernumber plugin creates a 
+	  *  number. All built-in variables are already set in the $reps variable, so you can even override
+	  *  the built-in variables by changing $reps accordingly.
+	  *  $nrtype is 0 for ordernumber, 1 for invoice number, 2 for customer number and 3 for order password
+	  *  $details contains the order details
+	  */
+	function onVmOrdernumberGetVariables(&$reps, $fmt, $nrtype, $details) {
+//         JFactory::getApplication()->enqueueMessage("<pre>Order Details: ".print_r($details,1)."</pre>", 'error');
+//         JFactory::getApplication()->enqueueMessage("<pre>Plugin params: ".print_r($this->params,1)."</pre>", 'error');
+        
+        $groups = array();
+        $uid = isset($details->virtuemart_user_id)?$details->virtuemart_user_id:0;
+        if ($uid>0) {
+            $userModel = VmModel::getModel('user');
+            $xrefTable = $userModel->getTable('vmuser_shoppergroups');
+            $groups = $xrefTable->load($uid);
+        }
+
+        foreach (range(1,6) as $i) {
+            $grp = $this->params->get('group'.(int)$i, 0);
+            $var = $this->params->get('variable'.(int)$i, null);
+            if (is_null($var)) continue;
+            $var = '['.strtolower($var).']';
+            $val = $this->params->get('value'.(int)$i, null);
+            
+            $match = (($grp==0) || // Set default value
+                      ($grp<0 && empty($groups)) || // NO group set, user does not have any groups
+                      ($grp>0 && !empty($groups) && in_array($grp, $groups))); // Have a user with group -> check groups
+            if ($match) {
+                if (is_null($val)) 
+                    unset($reps[$var]);
+                else
+                    $reps[$var] = $val;
+            }
+//             JFactory::getApplication()->enqueueMessage("<pre>group $i: grp=$grp, var=$var; val=$val, match=$match</pre>", 'error');
+        }
+//         JFactory::getApplication()->enqueueMessage("<pre>Replacements: ".print_r($reps,1).", groups: ".print_r($groups,1)."</pre>", 'error');
+	}
+}
+
+// No closing tag
diff --git a/plugins/ordernumber_shoppergroups/ordernumber_shoppergroups.script.php b/plugins/ordernumber_shoppergroups/ordernumber_shoppergroups.script.php
new file mode 100644
index 0000000000000000000000000000000000000000..4cbd8b5793f0545f197da9f8218769b3e1a3ae2d
--- /dev/null
+++ b/plugins/ordernumber_shoppergroups/ordernumber_shoppergroups.script.php
@@ -0,0 +1,88 @@
+<?php
+defined('_JEXEC') or die('Restricted access');
+
+/**
+ * Installation script for the plugin
+ *
+ * @copyright Copyright (C) 2014 Reinhold Kainhofer, office@open-tools.net
+ * @license GPL v3+,  http://www.gnu.org/copyleft/gpl.html 
+ */
+
+// Adjust the class name. It has to be of the form:
+//     plgVmShopperOrderNumber_ShopperGroupsInstallerScript
+class plgVmShopperOrderNumber_ShopperGroupsInstallerScript
+{
+    /**
+     * Constructor
+     *
+     * @param   JAdapterInstance  $adapter  The object responsible for running this script
+     */
+//     public function __constructor(JAdapterInstance $adapter);
+ 
+    /**
+     * Called before any type of action
+     *
+     * @param   string  $route  Which action is happening (install|uninstall|discover_install)
+     * @param   JAdapterInstance  $adapter  The object responsible for running this script
+     *
+     * @return  boolean  True on success
+     */
+//     public function preflight($route, JAdapterInstance $adapter);
+ 
+    /**
+     * Called after any type of action
+     *
+     * @param   string  $route  Which action is happening (install|uninstall|discover_install)
+     * @param   JAdapterInstance  $adapter  The object responsible for running this script
+     *
+     * @return  boolean  True on success
+     */
+//     public function postflight($route, JAdapterInstance $adapter);
+ 
+    /**
+     * Called on installation
+     *
+     * @param   JAdapterInstance  $adapter  The object responsible for running this script
+     *
+     * @return  boolean  True on success
+     */
+    public function install(JAdapterInstance $adapter)
+    {
+        // enabling plugin upon installation
+        $db = JFactory::getDBO();
+        $db->setQuery('update #__extensions set enabled = 1 where type = "plugin" and element = "ordernumber_shoppergroups" and folder = "vmshopper"');
+        $db->query();
+        
+        return True;
+    }
+ 
+    /**
+     * Called on update
+     *
+     * @param   JAdapterInstance  $adapter  The object responsible for running this script
+     *
+     * @return  boolean  True on success
+     */
+//     public function update(JAdapterInstance $adapter)
+//     {
+//         jimport( 'joomla.filesystem.file' ); 
+//         $file = JPATH_ROOT . DS . "administrator" . DS . "language" . DS . "en-GB" . DS . "en-GB.plg_vmshipmentrules_ordernumber_shoppergroups.sys.ini";
+//         if (JFile::exists($file)) JFile::delete($file); 
+//         $file = JPATH_ROOT . DS . "administrator" . DS . "language" . DS . "de-DE" . DS . "de-DE.plg_vmshipmentrules_ordernumber_shoppergroups.sys.ini"; 
+//         if (JFile::exists($file)) JFile::delete($file); 
+//         return true;
+//     }
+ 
+    /**
+     * Called on uninstallation
+     *
+     * @param   JAdapterInstance  $adapter  The object responsible for running this script
+     */
+//     public function uninstall(JAdapterInstance $adapter)
+//     {
+//         // Remove plugin table
+//         $db =& JFactory::getDBO();
+//         $db->setQuery('DROP TABLE IF EXISTS `#__virtuemart_vmshipmentrulesles_ordernumber_shoppergroups`;');
+//         $db->query();
+//     }
+}
diff --git a/plugins/ordernumber_shoppergroups/ordernumber_shoppergroups.xml b/plugins/ordernumber_shoppergroups/ordernumber_shoppergroups.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4646417d959cbb14fa978e0efd78d118516fe1fd
--- /dev/null
+++ b/plugins/ordernumber_shoppergroups/ordernumber_shoppergroups.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<extension version="2.5" type="plugin" group="vmshopper" method="upgrade">
+    <name>VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS</name>
+    <creationDate>2014-12-10</creationDate>
+    <author>Reinhold Kainhofer, Open Tools</author>
+    <authorUrl>http://www.open-tools.net</authorUrl>
+    <copyright>Copyright (C) 2014, Reinhold Kainhofer</copyright>
+    <license>GPL v3+</license>
+    <version>1.0</version>
+    <description>VMORDERNUMBER_ORDERNUMBER_SHOPPERGROUPS_DESC</description>
+    <files>
+        <filename plugin="ordernumber_shoppergroups">ordernumber_shoppergroups.php</filename>
+        <folder>language</folder>
+        <folder>fields</folder>
+    </files>
+    <languages folder="language">
+        <language tag="en-GB">en-GB/en-GB.plg_vmshopper_ordernumber_shoppergroups.ini</language>
+        <language tag="en-GB">en-GB/en-GB.plg_vmshopper_ordernumber_shoppergroups.sys.ini</language>
+    </languages>
+    <scriptfile>ordernumber_shoppergroups.script.php</scriptfile>
+
+    <config>
+        <fields name="params" addfieldpath="/plugins/vmshopper/ordernumber_shoppergroups/fields">
+            <fieldset name="config" label="PLG_ORDERNUMBER_SHOPPERGROUPS_FIELDSET">
+                <field name="group1spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP1HEADER" />
+                <field name="group1" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
+                <field name="variable1" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
+                <field name="value1" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
+                
+                <field name="group2spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP2HEADER" />
+                <field name="group2" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
+                <field name="variable2" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
+                <field name="value2" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
+                
+                <field name="group3spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP3HEADER" />
+                <field name="group3" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
+                <field name="variable3" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
+                <field name="value3" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
+                
+                <field name="group4spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP4HEADER" />
+                <field name="group4" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
+                <field name="variable4" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
+                <field name="value4" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
+                
+                <field name="group5spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP5HEADER" />
+                <field name="group5" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
+                <field name="variable5" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
+                <field name="value5" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
+                
+                <field name="group6spacer" type="spacer" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP6HEADER" />
+                <field name="group6" type="vmshoppergroup" label="PLG_ORDERNUMBER_SHOPPERGROUPS_GROUP" />
+                <field name="variable6" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VARIABLE" />
+                <field name="value6" type="text" label="PLG_ORDERNUMBER_SHOPPERGROUPS_VALUE" />
+                
+            </fieldset>
+        </fields>
+    </config>
+
+</extension>