Index: test/java/quickfix/DefaultDataDictionaryProviderTest.java
===================================================================
--- test/java/quickfix/DefaultDataDictionaryProviderTest.java	(revision 950)
+++ test/java/quickfix/DefaultDataDictionaryProviderTest.java	(working copy)
@@ -85,10 +85,10 @@
     @Test
     public void returnRegisteredAppDictionaryWithoutDiscovery() throws Exception {
         DefaultDataDictionaryProvider provider = new DefaultDataDictionaryProvider(false);
-        provider.addApplicationDictionary(new ApplVerID(FIX44), null, dictionaryForTest1);
-        provider.addApplicationDictionary(new ApplVerID(FIX40), null, dictionaryForTest2);
+        provider.addApplicationDictionary(new ApplVerID(FIX44), dictionaryForTest1);
+        provider.addApplicationDictionary(new ApplVerID(FIX40), dictionaryForTest2);
         
-        DataDictionary dd = provider.getApplicationDataDictionary(new ApplVerID(FIX40), null);
+        DataDictionary dd = provider.getApplicationDataDictionary(new ApplVerID(FIX40));
         
         assertThat(dd, is(dictionaryForTest2));
     }
@@ -96,9 +96,9 @@
     @Test
     public void returnNullAppDictionaryWithoutDiscovery() throws Exception {
         DefaultDataDictionaryProvider provider = new DefaultDataDictionaryProvider(false);
-        provider.addApplicationDictionary(new ApplVerID(FIX44), null, dictionaryForTest1);
+        provider.addApplicationDictionary(new ApplVerID(FIX44), dictionaryForTest1);
         
-        DataDictionary dd = provider.getApplicationDataDictionary(new ApplVerID(FIX40), null);
+        DataDictionary dd = provider.getApplicationDataDictionary(new ApplVerID(FIX40));
         
         assertThat(dd, is(nullValue()));
     }
@@ -106,42 +106,20 @@
     @Test
     public void returnAppDictionaryWithDiscovery() throws Exception {
         DefaultDataDictionaryProvider provider = new DefaultDataDictionaryProvider();
-        provider.addApplicationDictionary(new ApplVerID(FIX44), null, dictionaryForTest1);
+        provider.addApplicationDictionary(new ApplVerID(FIX44), dictionaryForTest1);
         
-        DataDictionary dd = provider.getApplicationDataDictionary(new ApplVerID(FIX40), null);
+        DataDictionary dd = provider.getApplicationDataDictionary(new ApplVerID(FIX40));
         
         assertThat(dd, is(notNullValue()));
         assertThat(dd.getVersion(), is(FixVersions.BEGINSTRING_FIX40));
     }
     
     @Test
-    public void returnCustomAppDictionaryWithoutDiscovery() throws Exception {
-        DefaultDataDictionaryProvider provider = new DefaultDataDictionaryProvider(false);
-        provider.addApplicationDictionary(new ApplVerID(FIX44), null, dictionaryForTest1);
-        provider.addApplicationDictionary(new ApplVerID(FIX40), CUSTOM_APP_VERSION, dictionaryForTest2);
-        
-        DataDictionary dd = provider.getApplicationDataDictionary(new ApplVerID(FIX40), CUSTOM_APP_VERSION);
-        
-        assertThat(dd, is(dictionaryForTest2));
-    }
-
-    @Test
-    public void returnCustomAppDictionaryWithDiscovery() throws Exception {
-        DefaultDataDictionaryProvider provider = new DefaultDataDictionaryProvider();
-        provider.addApplicationDictionary(new ApplVerID(FIX44), null, dictionaryForTest1);
-        
-        DataDictionary dd = provider.getApplicationDataDictionary(new ApplVerID(FIX44), CUSTOM_APP_VERSION);
-        
-        assertThat(dd.getVersion(), is(FixVersions.BEGINSTRING_FIX44));
-        assertThat(dd, is(not(dictionaryForTest1)));
-    }
-
-    @Test
     public void throwExceptionIfAppDictionaryIsNotFound() throws Exception {
         DefaultDataDictionaryProvider provider = new DefaultDataDictionaryProvider();
         
         try {
-            provider.getApplicationDataDictionary(new ApplVerID(FIX44), "Invalid_Test");
+            provider.getApplicationDataDictionary(new ApplVerID("Invalid_Test"));
         } catch (QFJException e) {
             assertThat(e.getCause(), is(ConfigError.class));
         }
@@ -152,7 +130,7 @@
         DefaultDataDictionaryProvider provider = new DefaultDataDictionaryProvider();
         
         try {
-            provider.getApplicationDataDictionary(new ApplVerID("999"), null);
+            provider.getApplicationDataDictionary(new ApplVerID("999"));
         } catch (QFJException e) {
             assertThat(e.getMessage(), containsString(" 999"));
         }
Index: test/java/quickfix/DefaultSessionFactoryTest.java
===================================================================
--- test/java/quickfix/DefaultSessionFactoryTest.java	(revision 950)
+++ test/java/quickfix/DefaultSessionFactoryTest.java	(working copy)
@@ -93,9 +93,9 @@
         assertThat(provider.getSessionDataDictionary(sessionID.getBeginString()),
                 is(notNullValue()));
 
-        assertThat(provider.getApplicationDataDictionary(new ApplVerID(ApplVerID.FIX42), null),
+        assertThat(provider.getApplicationDataDictionary(new ApplVerID(ApplVerID.FIX42)),
                 is(notNullValue()));
-        assertThat(provider.getApplicationDataDictionary(new ApplVerID(ApplVerID.FIX40), null),
+        assertThat(provider.getApplicationDataDictionary(new ApplVerID(ApplVerID.FIX40)),
                 is(notNullValue()));
     }
 
@@ -108,7 +108,7 @@
         DataDictionaryProvider provider = session.getDataDictionaryProvider();
         assertThat(provider.getSessionDataDictionary(sessionID.getBeginString()),
                 is(notNullValue()));
-        assertThat(provider.getApplicationDataDictionary(new ApplVerID(ApplVerID.FIX42), null),
+        assertThat(provider.getApplicationDataDictionary(new ApplVerID(ApplVerID.FIX42)),
                 is(notNullValue()));
     }
 
@@ -211,4 +211,4 @@
         settings.setString(sessionID, Session.SETTING_HEARTBTINT, "10");
         settings.setString(sessionID, "BeginString", "FIX.4.2");
     }
-}
\ No newline at end of file
+}
Index: main/java/quickfix/Session.java
===================================================================
--- main/java/quickfix/Session.java	(revision 950)
+++ main/java/quickfix/Session.java	(working copy)
@@ -38,7 +38,6 @@
 import quickfix.field.BeginSeqNo;
 import quickfix.field.BeginString;
 import quickfix.field.BusinessRejectReason;
-import quickfix.field.CstmApplVerID;
 import quickfix.field.DefaultApplVerID;
 import quickfix.field.EncryptMethod;
 import quickfix.field.EndSeqNo;
@@ -862,16 +861,12 @@
                 DataDictionary sessionDataDictionary = dataDictionaryProvider
                         .getSessionDataDictionary(beginString);
 
-                String customApplVerID = header.isSetField(CstmApplVerID.FIELD) ? header
-                        .getString(CstmApplVerID.FIELD) : null;
-
                 ApplVerID applVerID = header.isSetField(ApplVerID.FIELD) ? new ApplVerID(
                         header.getString(ApplVerID.FIELD)) : targetDefaultApplVerID.get();
 
                 DataDictionary applicationDataDictionary = isAdminMessage(msgType)
                         ? dataDictionaryProvider.getSessionDataDictionary(beginString)
-                        : dataDictionaryProvider.getApplicationDataDictionary(applVerID,
-                                customApplVerID);
+                        : dataDictionaryProvider.getApplicationDataDictionary(applVerID);
 
                 // related to QFJ-367 : just warn invalid incoming field/tags
                 try {
@@ -2479,4 +2474,4 @@
         this.checkGapFieldOnAdminMessage = checkGapFieldOnAdminMessage;
     }
 
-}
\ No newline at end of file
+}
Index: main/java/quickfix/MessageUtils.java
===================================================================
--- main/java/quickfix/MessageUtils.java	(revision 950)
+++ main/java/quickfix/MessageUtils.java	(working copy)
@@ -128,11 +128,9 @@
         String msgType = getMessageType(messageString);
         
         ApplVerID applVerID = null;
-        String customApplVerID = null;
 
         if (FixVersions.BEGINSTRING_FIXT11.equals(beginString)) {
             applVerID = getApplVerID(session, messageString);
-            customApplVerID = getStringField(messageString, CstmApplVerID.FIELD);
         } else {
             applVerID = toApplVerID(beginString);
         }
@@ -142,7 +140,7 @@
         DataDictionaryProvider ddProvider = session.getDataDictionaryProvider();
         DataDictionary sessionDataDictionary = ddProvider==null ? null : ddProvider.getSessionDataDictionary(beginString);
         DataDictionary applicationDataDictionary = ddProvider==null ? null : ddProvider.getApplicationDataDictionary(
-                applVerID, customApplVerID);
+                applVerID);
 
         quickfix.Message message = messageFactory.create(beginString, msgType);
         DataDictionary payloadDictionary = sessionDataDictionary.isAdminMessage(msgType)
Index: main/java/quickfix/DefaultDataDictionaryProvider.java
===================================================================
--- main/java/quickfix/DefaultDataDictionaryProvider.java	(revision 950)
+++ main/java/quickfix/DefaultDataDictionaryProvider.java	(working copy)
@@ -56,13 +56,12 @@
         return dd;
     }
 
-    public DataDictionary getApplicationDataDictionary(ApplVerID applVerID, String customApplVerID) {
-        AppVersionKey appVersionKey = new AppVersionKey(applVerID, customApplVerID);
+    public DataDictionary getApplicationDataDictionary(ApplVerID applVerID) {
+        AppVersionKey appVersionKey = new AppVersionKey(applVerID);
         DataDictionary dd = applicationDictionaries.get(appVersionKey);
         if (dd == null && findDataDictionaries) {
             String beginString = toBeginString(applVerID);
             String path = beginString.replace(".", "")
-                    + (customApplVerID != null ? CUSTOM_APPL_VERSION_DELIM + customApplVerID : "")
                     + ".xml";
             try {
                 dd = new DataDictionary(path);
@@ -78,18 +77,16 @@
         transportDictionaries.put(beginString, dd);
     }
 
-    public void addApplicationDictionary(ApplVerID applVerID, String customApplVerID,
+    public void addApplicationDictionary(ApplVerID applVerID,
             DataDictionary dataDictionary) {
-        applicationDictionaries.put(new AppVersionKey(applVerID, customApplVerID), dataDictionary);
+        applicationDictionaries.put(new AppVersionKey(applVerID), dataDictionary);
     }
 
     private static class AppVersionKey {
         private final ApplVerID applVerID;
-        private final String customApplVerID;
 
-        public AppVersionKey(ApplVerID applVerID, String customApplVerID) {
+        public AppVersionKey(ApplVerID applVerID) {
             this.applVerID = applVerID;
-            this.customApplVerID = customApplVerID;
         }
 
         @Override
@@ -97,7 +94,6 @@
             final int prime = 31;
             int result = 1;
             result = prime * result + ((applVerID == null) ? 0 : applVerID.hashCode());
-            result = prime * result + ((customApplVerID == null) ? 0 : customApplVerID.hashCode());
             return result;
         }
 
@@ -120,13 +116,6 @@
             } else if (!applVerID.equals(other.applVerID)) {
                 return false;
             }
-            if (customApplVerID == null) {
-                if (other.customApplVerID != null) {
-                    return false;
-                }
-            } else if (!customApplVerID.equals(other.customApplVerID)) {
-                return false;
-            }
             return true;
         }
     }
Index: main/java/quickfix/DataDictionaryProvider.java
===================================================================
--- main/java/quickfix/DataDictionaryProvider.java	(revision 950)
+++ main/java/quickfix/DataDictionaryProvider.java	(working copy)
@@ -41,9 +41,8 @@
      * 
      * @param applVerID the application version ID. Prior to FIXT.1.1, the applVerID 
      * will be determined by BeginString field.
-     * @param customApplVerID the custom application ID. (optional, can be null)
      * @return the data dictionary for the specified application version or null if no such
      * dictionary is available.
      */
-    DataDictionary getApplicationDataDictionary(ApplVerID applVerID, String customApplVerID);
+    DataDictionary getApplicationDataDictionary(ApplVerID applVerID);
 }
Index: main/java/quickfix/DefaultSessionFactory.java
===================================================================
--- main/java/quickfix/DefaultSessionFactory.java	(revision 950)
+++ main/java/quickfix/DefaultSessionFactory.java	(working copy)
@@ -196,7 +196,7 @@
                 Session.SETTING_DATA_DICTIONARY, sessionID.getBeginString());
         dataDictionaryProvider.addTransportDictionary(sessionID.getBeginString(), dataDictionary);
         dataDictionaryProvider.addApplicationDictionary(MessageUtils.toApplVerID(sessionID
-                .getBeginString()), null, dataDictionary);
+                .getBeginString()),  dataDictionary);
     }
 
     private DataDictionary createDataDictionary(SessionID sessionID, SessionSettings settings,
@@ -244,7 +244,7 @@
                             Session.SETTING_DEFAULT_APPL_VER_ID));
                     DataDictionary dd = createDataDictionary(sessionID, settings,
                             Session.SETTING_APP_DATA_DICTIONARY, sessionID.getBeginString());
-                    dataDictionaryProvider.addApplicationDictionary(applVerID, null, dd);
+                    dataDictionaryProvider.addApplicationDictionary(applVerID,  dd);
                 } else {
                     // Process qualified app data dictionary properties
                     int offset = key.indexOf('.');
@@ -257,7 +257,7 @@
                     DataDictionary dd = createDataDictionary(sessionID, settings, key,
                             beginStringQualifier);
                     dataDictionaryProvider.addApplicationDictionary(MessageUtils
-                            .toApplVerID(beginStringQualifier), null, dd);
+                            .toApplVerID(beginStringQualifier), dd);
 
                 }
             }

