diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/MapUDDIv2Tov3.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/MapUDDIv2Tov3.java
index 4d0947b..183e934 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/MapUDDIv2Tov3.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/MapUDDIv2Tov3.java
@@ -766,6 +766,7 @@
                 FindBusiness r = new FindBusiness();
                 r.setCategoryBag(MapCategoryBag(body.getCategoryBag()));
                 r.setDiscoveryURLs(MapDiscoveryURLs(body.getDiscoveryURLs()));
+                r.setIdentifierBag(MapIdentBag(body.getIdentifierBag()));
                 r.setFindQualifiers(MapFindQualifiers(body.getFindQualifiers(), false));
                 r.setTModelBag(MapTModelBag(body.getTModelBag()));
                 r.setMaxRows(body.getMaxRows());
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_110_FindBusinessTest.java b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_110_FindBusinessTest.java
index f03dd60..4576ae5 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_110_FindBusinessTest.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_110_FindBusinessTest.java
@@ -29,6 +29,8 @@
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.uddi.api_v2.IdentifierBag;
+import org.uddi.api_v2.KeyedReference;
 import org.uddi.api_v3.BusinessInfo;
 import org.uddi.api_v3.BusinessList;
 import org.uddi.api_v3.FindBusiness;
@@ -63,6 +65,7 @@
     private static TckTModel tckTModel                = new TckTModel(new UDDIPublicationImpl(), new UDDIInquiryImpl());
     private static TckBusiness tckBusiness            = new TckBusiness(new UDDIPublicationImpl(), new UDDIInquiryImpl());
     private static UDDIInquiryImpl inquiry            = new UDDIInquiryImpl();
+    private static UDDIv2InquiryImpl inquiryv2            = new UDDIv2InquiryImpl();
 	protected static String authInfoJoe               = null;
 
 	@AfterClass
@@ -142,4 +145,46 @@
 		}
 	}
 	
+        
+        
+        @Test
+	public void findBusinessByTModelV2() {
+		try {
+			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
+			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
+			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
+			
+			tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS_XML, TOM_BUSINESS_KEY, 1);
+			
+			try {
+				int size = 0;
+				
+        
+                                org.uddi.api_v2.BusinessList bl = null;
+	
+                                org.uddi.api_v2.FindBusiness fbb = new org.uddi.api_v2.FindBusiness();
+                                org.uddi.api_v2.IdentifierBag tmb = new org.uddi.api_v2.IdentifierBag();
+				tmb.getKeyedReference().add(new KeyedReference("uuid:578a72bd-8f35-4099-b559-8b4997389bc5",
+                                        "DUNS", "12-345-6781"));
+				fbb.setIdentifierBag(tmb);
+				bl = inquiryv2.findBusiness(fbb);
+				size = bl.getBusinessInfos().getBusinessInfo().size();
+				if (size != 0) {
+					Assert.fail("Should have found no entry on FindBusiness with TModelBag, "
+							+ "found " + size);
+				} 
+			} catch (Exception e) {
+				e.printStackTrace();
+				Assert.fail(e.getMessage());
+			}
+		} finally {
+			tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS_XML, TOM_BUSINESS_KEY, 1);
+			
+			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
+			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
+			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
+
+		}
+	}
+	
 }
diff --git a/juddi-ddl-generator/src/main/java/org/apache/juddi/ddl/generator/App.java b/juddi-ddl-generator/src/main/java/org/apache/juddi/ddl/generator/App.java
index 33e922e..d226c30 100644
--- a/juddi-ddl-generator/src/main/java/org/apache/juddi/ddl/generator/App.java
+++ b/juddi-ddl-generator/src/main/java/org/apache/juddi/ddl/generator/App.java
@@ -264,8 +264,15 @@
                 Derby("org.hibernate.dialect.DerbyDialect"),
                 MySQLInnoDB("org.hibernate.dialect.MySQLInnoDBDialect"),
                 Oracle9i("org.hibernate.dialect.Oracle9iDialect"),
+                Oracle10g("org.hibernate.dialect.Oracle10gDialect"),
+                Oracle12c("org.hibernate.dialect.Oracle12cDialect"),
                 Sybase("org.hibernate.dialect.SybaseDialect"),
-                MSSQL2000("org.hibernate.dialect.SQLServerDialect");
+                MSSQL2000("org.hibernate.dialect.SQLServerDialect"),
+                MSSQL2005("org.hibernate.dialect.SQLServer2005Dialect"),
+                MSSQL2008("org.hibernate.dialect.SQLServer2008Dialect"),
+                MSSQL2012("org.hibernate.dialect.SQLServer2012Dialect");
+
+
                 //   MSSQL2008("org.hibernate.dialect.SQLServer2008Dialect");
 
                 private String dialectClass;
diff --git a/pom.xml b/pom.xml
index 3e976d9..aefccfd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -776,13 +776,13 @@
 			<dependency>
 				<groupId>org.hibernate</groupId>
 				<artifactId>hibernate-core</artifactId>
-				<version>5.1.10.Final</version>
+				<version>5.4.18.Final</version>
 
 			</dependency>
 			<dependency>
 				<groupId>org.hibernate</groupId>
 				<artifactId>hibernate-entitymanager</artifactId>
-				<version>5.1.10.Final</version>
+				<version>5.4.18.Final</version>
 
 			</dependency>
 
