diff --git a/core/js/multiselect.js b/core/js/multiselect.js
index d41b5d552ab40c8588452b068025b3a6de5f6b79..9e808a2bb72b10a1696b275672d566a65e5c30bd 100644
--- a/core/js/multiselect.js
+++ b/core/js/multiselect.js
@@ -1,5 +1,7 @@
 /**
- * @param 'createCallback' A function to be called when a new entry is created. Only argument to the function is the value of the option.
+ * @param 'createCallback' A function to be called when a new entry is created. Two arguments are supplied to this function:
+ *	The select element used and the value of the option. If the function returns false addition will be cancelled. If it returns
+ * 	anything else it will be used as the value of the newly added option.
  * @param 'createText' The placeholder text for the create action.
  * @param 'title' The title to show if no options are selected.
  * @param 'checked' An array containing values for options that should be checked. Any options which are already selected will be added to this array.
@@ -23,6 +25,7 @@
 			'onuncheck':false,
 			'minWidth': 'default;',
 		};
+		$(this).attr('data-msid', multiSelectId);
 		$.extend(settings,options);
 		$.each(this.children(),function(i,option) {
 			// If the option is selected, but not in the checked array, add it.
@@ -189,30 +192,36 @@
 							if (exists) {
 								return false;
 							}
+							var li=$(this).parent();
+							var val = $(this).val()
+							var select=button.parent().next();
+							if(typeof settings.createCallback === 'function') {
+								var response = settings.createCallback(select, val);
+								if(response === false) {
+									return false;
+								} else if(typeof response !== 'undefined') {
+									val = response;
+								}
+							}
 							if(settings.singleSelect) {
 								$.each(select.find('option:selected'), function() {
 									$(this).removeAttr('selected');
 								});
 							}
-							var li=$(this).parent();
 							$(this).remove();
 							li.text('+ '+settings.createText);
 							li.before(createItem(this));
-							if(self.menuDirection === 'up') {
-								var list = li.parent();
-								list.css('top', list.position().top-li.outerHeight());
-							}
-							var select=button.parent().next();
 							var option=$('<option selected="selected"/>');
+							option.text($(this).val()).val(val).attr('selected', 'selected');
 							select.append(option);
-							option.text($(this).val()).val($(this).val()).attr('selected', 'selected');
 							li.prev().children('input').prop('checked', true).trigger('change');
 							button.parent().data('preventHide',false);
 							button.children('span').first().text(settings.labels.length > 0 
 								? settings.labels.join(', ')
 								: settings.title);
-							if(typeof settings.createCallback === 'function') {
-								settings.createCallback($(this).val());
+							if(self.menuDirection === 'up') {
+								var list = li.parent();
+								list.css('top', list.position().top-li.outerHeight());
 							}
 						}
 					});
diff --git a/settings/js/users.js b/settings/js/users.js
index f2ce69cf3118cdb0af9efa68e1d976003739c50b..f5030ddb370c264e4b425df5e715213cebe58d0a 100644
--- a/settings/js/users.js
+++ b/settings/js/users.js
@@ -178,9 +178,9 @@ var UserList={
 			}else{
 				checkHandeler=false;
 			}
-			var addGroup = function(group) {
+			var addGroup = function(select, group) {
 				$('select[multiple]').each(function(index, element) {
-					if ($(element).find('option[value="'+group +'"]').length == 0) {
+					if ($(element).find('option[value="'+group +'"]').length === 0 && select.data('msid') !== $(element).data('msid')) {
 						$(element).append('<option value="'+group+'">'+group+'</option>');
 					}
 				})