diff --git a/CHANGES.txt b/CHANGES.txt
index 8451038..5c41ff1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,9 +3,11 @@
 
 ======================= 2.1-SNAPSHOT =====================
 
-CONNECTORS-1228: Fix default values so they are correct.
-
 ======================= Release 2.0 =====================
 
+CONNECTORS-1314: Use ":" as mcf user name / mcf domain name separator instead of "@".
+
+CONNECTORS-1228: Fix default values so they are correct.
+
 Initial commit.
 (Karl Wright, on behalf of Bartłomiej Superson)
diff --git a/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizer.java b/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizer.java
index 4cf0e28..59891c7 100644
--- a/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizer.java
+++ b/src/main/java/org/apache/manifoldcf/elasticsearch/MCFAuthorizer.java
@@ -116,14 +116,14 @@
   }
 
   /** Main method for building a filter representing appropriate security.
-   *@param authenticatedUserNamesAndDomains is a list of user names and its domains in the form "user@domain".
+   *@param authenticatedUserNamesAndDomains is a list of user names and its domains in the form "user:mcfdomain".
    *@return the filter builder.
    */
   public FilterBuilder buildAuthorizationFilter(String[] authenticatedUserNamesAndDomains)
     throws  MCFAuthorizerException{
     Map<String,String> domainMap = new HashMap<String,String>();
     for(String buffer : authenticatedUserNamesAndDomains){
-      String[] authenticatedUserNameAndDomain = buffer.split("@", 2);
+      String[] authenticatedUserNameAndDomain = buffer.split(":", 2);
       String authenticatedUserName = authenticatedUserNameAndDomain[0];
       String authenticatedUserDomain;
       if(authenticatedUserNameAndDomain.length<2) authenticatedUserDomain="";
@@ -166,7 +166,7 @@
   }
   
   /** Main method for building a filter representing appropriate security.
-  *@param authenticatedUserName is a user name in the form "user@domain".
+  *@param authenticatedUserName is a user name in the form "user:mcfdomain".
   *@return the filter builder.
   */
   public FilterBuilder buildAuthorizationFilter(String authenticatedUserName)
@@ -176,7 +176,7 @@
   }
   
   /** Main method for building a filter representing appropriate security.
-  *@param authenticatedUserName is a user name in the form "user@domain".
+  *@param authenticatedUserName is a user name in the form "user".
   *@param authenticatedUserDomain is the corresponding MCF authorization domain.
   *@return the filter builder.
   */
