diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/config/PersistenceUnitProperties.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/config/PersistenceUnitProperties.java
index 4e7d9ff..010f2f2 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/config/PersistenceUnitProperties.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/config/PersistenceUnitProperties.java
@@ -1140,18 +1140,6 @@
      */
     public static final String VALIDATION_GROUP_PRE_REMOVE = "javax.persistence.validation.group.pre-remove";
 
-    /**
-     * Property for disabling Bean Validation optimisations.
-     * Bean Validation features optimisations, which are used to skip BV processes on non-constrained objects.
-     *
-     * This is to make maintenance easier and to allow for debugging in case that some object is not validated,
-     * but should be.
-     *
-     * Usage: set to {@link Boolean#TRUE} to disable optimisations, set to {@link Boolean#FALSE} to re-enable them
-     * again.
-     */
-    public static final String BEAN_VALIDATION_NO_OPTIMISATION = "eclipselink.beanvalidation.no-optimisation";
-
     // Caching Properties
 
     /**
diff --git a/jpa/eclipselink.jpa.test/antbuild.properties b/jpa/eclipselink.jpa.test/antbuild.properties
index 0d0e571..2df6298 100644
--- a/jpa/eclipselink.jpa.test/antbuild.properties
+++ b/jpa/eclipselink.jpa.test/antbuild.properties
@@ -108,7 +108,6 @@
 eclipselink.delimited.model=eclipselink-delimited-model
 eclipselink.extensibility.model=eclipselink-extensibility-model
 eclipselink.beanvalidation.model=eclipselink-beanvalidation-model
-eclipselink.beanvalidation.dynamic.model=eclipselink-beanvalidation-dynamic-model
 
 eclipselink.composite.advanced.model=eclipselink-composite-advanced-model
 eclipselink.composite.advanced.model.member_1=eclipselink-composite-advanced-model-member_1
diff --git a/jpa/eclipselink.jpa.test/antbuild.xml b/jpa/eclipselink.jpa.test/antbuild.xml
index 02c7e98..caaa5c9 100644
--- a/jpa/eclipselink.jpa.test/antbuild.xml
+++ b/jpa/eclipselink.jpa.test/antbuild.xml
@@ -550,7 +550,6 @@
             <fileset file="${jpatest.basedir}/${eclipselink.delimited.model}.jar"/>
             <fileset file="${jpatest.basedir}/${eclipselink.extensibility.model}.jar"/>
             <fileset file="${jpatest.basedir}/${eclipselink.beanvalidation.model}.jar"/>
-            <fileset file="${jpatest.basedir}/${eclipselink.beanvalidation.dynamic.model}.jar"/>
             <fileset file="${jpatest.basedir}/${eclipselink.composite.advanced.model}.jar"/>
             <fileset file="${jpatest.basedir}/${eclipselink.composite.advanced.model.member_1}.jar"/>
             <fileset file="${jpatest.basedir}/${eclipselink.composite.advanced.model.member_2}.jar"/>
@@ -593,7 +592,6 @@
         <mkdir dir="${jpatest.basedir}/${build.dir}/${eclipselink.delimited.model}"/>
         <mkdir dir="${jpatest.basedir}/${build.dir}/${eclipselink.extensibility.model}"/>
         <mkdir dir="${jpatest.basedir}/${build.dir}/${eclipselink.beanvalidation.model}"/>
-        <mkdir dir="${jpatest.basedir}/${build.dir}/${eclipselink.beanvalidation.dynamic.model}"/>
         <mkdir dir="${jpatest.basedir}/${build.dir}/${eclipselink.composite.advanced.model}"/>
         <mkdir dir="${jpatest.basedir}/${build.dir}/${eclipselink.composite.advanced.model.member_1}"/>
         <mkdir dir="${jpatest.basedir}/${build.dir}/${eclipselink.composite.advanced.model.member_2}"/>
@@ -783,7 +781,7 @@
     </target>
 
     <!-- Packages JPA persistent unit test jars. -->
-    <target name="package" depends="config-classpath, package-annotation, package-ddl, package-xml-only, package-xml-merge, package-jpa21-model, package-xml-extended, package-validation-failed, package-jpa-advanced-field-access, package-jpa-advanced-properties, package-jpa-pu_with_spaces, package-partitioned, package-plsql, package-jpa-performance, package-jpa-performance2, package-cascade-deletes, package-jpa-metamodel, package-delimited, package-beanvalidation, package-beanvalidation-dynamic,
+    <target name="package" depends="config-classpath, package-annotation, package-ddl, package-xml-only, package-xml-merge, package-jpa21-model, package-xml-extended, package-validation-failed, package-jpa-advanced-field-access, package-jpa-advanced-properties, package-jpa-pu_with_spaces, package-partitioned, package-plsql, package-jpa-performance, package-jpa-performance2, package-cascade-deletes, package-jpa-metamodel, package-delimited, package-beanvalidation,
     package-composite-advanced, package-composite-advanced-member_1, package-composite-advanced-member_2, package-composite-advanced-member_3,
     package-xml-composite-advanced, package-xml-composite-advanced-member_1, package-xml-composite-advanced-member_2, package-xml-composite-advanced-member_3,
     package-xml-extended-composite-advanced, package-xml-extended-composite-advanced-member_1, package-xml-extended-composite-advanced-member_2, package-xml-extended-composite-advanced-member_3, package-extensibility, package-jpa-remote, package-xml-mapping-metadata-complete" description="build EclipseLink jar">
@@ -1206,7 +1204,7 @@
         </copy>
         <copy todir="${jpatest.basedir}/${build.dir}/${eclipselink.beanvalidation.model}">
             <fileset dir="${jpatest.basedir}/${classes.dir}"
-                     includes="org/eclipse/persistence/testing/models/jpa/beanvalidation/BeanValidationJunitTest*"/>
+                     includes="org/eclipse/persistence/testing/models/jpa/beanvalidation/**"/>
         </copy>
         <jar jarfile="${jpatest.basedir}/${eclipselink.beanvalidation.model}.jar">
             <fileset dir="${jpatest.basedir}/${build.dir}/${eclipselink.beanvalidation.model}">
@@ -1214,20 +1212,6 @@
         </jar>
     </target>
 
-    <target name="package-beanvalidation-dynamic" depends="">
-        <copy todir="${jpatest.basedir}/${build.dir}/${eclipselink.beanvalidation.dynamic.model}/META-INF">
-            <fileset dir="${jpatest.basedir}/resource/${eclipselink.beanvalidation.dynamic.model}" includes="*.xml"/>
-        </copy>
-        <copy todir="${jpatest.basedir}/${build.dir}/${eclipselink.beanvalidation.dynamic.model}">
-            <fileset dir="${jpatest.basedir}/${classes.dir}"
-                     includes="org/eclipse/persistence/testing/models/jpa/beanvalidation/dynamic/BeanValidationDynamicEntityJunitTest*"/>
-        </copy>
-        <jar jarfile="${jpatest.basedir}/${eclipselink.beanvalidation.dynamic.model}.jar">
-            <fileset dir="${jpatest.basedir}/${build.dir}/${eclipselink.beanvalidation.dynamic.model}">
-            </fileset>
-        </jar>
-    </target>
-
     <target name="package-composite-advanced" depends="">
         <copy todir="${jpatest.basedir}/${build.dir}/${eclipselink.composite.advanced.model}/META-INF">
             <fileset dir="${jpatest.basedir}/resource/${eclipselink.composite.advanced.model}" includes="*.xml"/>
@@ -1482,10 +1466,6 @@
             <pathelement path="${extensions.depend.dir}/${classmate.jar}"/>
             <pathelement path="${extensions.depend.dir}/${javax.validation.jar}"/>
         </path>
-        <path id="run.bean.validation.dynamic.classpath">
-            <path refid="run.bean.validation.classpath"/>            
-            <pathelement path="${jpatest.basedir}/${eclipselink.beanvalidation.dynamic.model}.jar"/>
-        </path>
         <path id="run.jpa21.classpath">
             <pathelement path="${jpatest.basedir}/${classes21.dir}"/>
             <path refid="jpa21.compile.path"/>
@@ -1678,15 +1658,6 @@
             <param name="RUN_PATH" value="run.bean.validation.classpath"/>
             <param name="DB_URL" value="${db.url}"/>
         </antcall>
-        <antcall target="run-test" inheritRefs="true">
-            <param name="TEST_CLASS" value="org.eclipse.persistence.testing.tests.jpa.beanvalidation.dynamic.BeanValidationDynamicEntityJunitTest"/>
-            <param name="TEST_AGENT" value="${test.agent}"/>
-            <param name="TEST_WEAVING" value="${test.weaving}"/>
-            <param name="TEST_WEAVING_OPTION" value="${test.weaving.option}"/>
-            <param name="ORM_TESTING" value="-Dorm.testing=jpa"/>
-            <param name="RUN_PATH" value="run.bean.validation.dynamic.classpath"/>
-            <param name="DB_URL" value="${db.url}"/>
-        </antcall>
     </target>
 
     <target name="oracle-test" if="is.oracle" depends="config-classpath">
@@ -1838,7 +1809,6 @@
             <pathelement path="${jpatest.basedir}/woven-${eclipselink.delimited.model}.jar"/>
             <pathelement path="${jpatest.basedir}/woven-${eclipselink.extensibility.model}.jar"/>
             <pathelement path="${jpatest.basedir}/woven-${eclipselink.beanvalidation.model}.jar"/>
-            <pathelement path="${jpatest.basedir}/woven-${eclipselink.beanvalidation.dynamic.model}.jar"/>
             <pathelement path="${jpatest.basedir}/${eclipselink.composite.advanced.model}.jar"/>
             <pathelement path="${jpatest.basedir}/woven-${eclipselink.composite.advanced.model.member_1}.jar"/>
             <pathelement path="${jpatest.basedir}/woven-${eclipselink.composite.advanced.model.member_2}.jar"/>
@@ -2424,20 +2394,6 @@
                     <path refid="run.classpath"/>
                </classpath>
         </weave>
-        <weave source= "${jpatest.basedir}/${eclipselink.beanvalidation.dynamic.model}.jar"
-               target = "${jpatest.basedir}/woven-${eclipselink.beanvalidation.dynamic.model}.jar"
-               loglevel="${logging.level}">
-               <classpath>
-                    <path refid="run.classpath"/>
-               </classpath>
-        </weave>
-        <weave source= "${jpatest.basedir}/${eclipselink.beanvalidation.dynamic.model}.jar"
-               target = "${jpatest.basedir}/woven-${eclipselink.beanvalidation.dynamic.model}.jar"
-               loglevel="${logging.level}">
-               <classpath>
-                    <path refid="run.classpath"/>
-               </classpath>
-        </weave>
         <weave source= "${jpatest.basedir}/${eclipselink.composite.advanced.model.member_1}.jar"
                target = "${jpatest.basedir}/woven-${eclipselink.composite.advanced.model.member_1}.jar"
                persistenceinfo="${jpatest.basedir}/${eclipselink.composite.advanced.model}.jar"
@@ -3782,23 +3738,12 @@
             <param name="PERSISTENCE_UNIT_NAME" value="beanvalidation"/>
             <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/beanvalidation"/>
             <param name="MODEL_NAME" value="eclipselink-beanvalidation-model"/>
-            <!-- This also includes dynamic entity test class - tests pass but maybe should separate -->
             <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/beanvalidation"/>
             <param name="TEST_NAME" value="eclipselink-beanvalidation-model"/>
             <param name="EAR_NAME" value="eclipselink-beanvalidation-model"/>
             <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.beanvalidation.BeanValidationJunitTest"/>
             <param name="eclipselink.jpa.test.dir" value="."/>
         </antcall>
-        <!--<antcall target="server-run-all" inheritRefs="true">-->
-            <!--<param name="PERSISTENCE_UNIT_NAME" value="beanvalidation-dynamic"/>-->
-            <!--<param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/beanvalidation-dynamic"/>-->
-            <!--<param name="MODEL_NAME" value="eclipselink-beanvalidation-dynamic-model"/>-->
-            <!--<param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/beanvalidation/dynamic"/>-->
-            <!--<param name="TEST_NAME" value="eclipselink-beanvalidation-dynamic-model"/>-->
-            <!--<param name="EAR_NAME" value="eclipselink-beanvalidation-dynamic-model"/>-->
-            <!--<param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.beanvalidation.dynamic.BeanValidationDynamicEntityJunitTest"/>-->
-            <!--<param name="eclipselink.jpa.test.dir" value="."/>-->
-        <!--</antcall>-->
     </target>
 
     <target name="prepare-project-cache-persistence-xml">
diff --git a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/employee-constraints.xml b/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/employee-constraints.xml
deleted file mode 100644
index cdba423..0000000
--- a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/employee-constraints.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd"
-	xmlns="http://jboss.org/xml/ns/javax/validation/mapping">
-	<default-package>org.eclipse.persistence.testing.models.jpa.beanvalidation</default-package>
-	<bean class="DynamicEmployee" ignore-annotations="true">
-		<getter name="name" ignore-annotations="true">
-			<constraint annotation="javax.validation.constraints.NotNull" />
-		</getter>
-		<getter name="surname" ignore-annotations="true">
-			<constraint annotation="javax.validation.constraints.NotNull" />
-		</getter>
-	</bean>
-</constraint-mappings>
\ No newline at end of file
diff --git a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/employee-orm.xml b/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/employee-orm.xml
deleted file mode 100644
index a4c0539..0000000
--- a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/employee-orm.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<entity-mappings version="2.1"
-	xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
-	<package>org.eclipse.persistence.testing.models.jpa.beanvalidation</package>
-
-	<entity class="DynamicEmployee" access="VIRTUAL">
-		<attributes>
-			<id name="id" attribute-type="Integer">
-				<generated-value strategy="SEQUENCE" generator="employee-generator" />
-				<sequence-generator name="employee-generator" sequence-name="DYN_EMP_SEQ" />
-			</id>
-			<basic name="name" attribute-type="String"/>
-			<basic name="surname" attribute-type="String"/>
-			<version name="version" attribute-type="Long"/>
-		</attributes>
-	</entity>
-
-</entity-mappings>
diff --git a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/persistence.xml b/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/persistence.xml
deleted file mode 100644
index 42d094a..0000000
--- a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/persistence.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_2_0.xsd" version="2.0">
-    <persistence-unit name="beanvalidation-dynamic" transaction-type="RESOURCE_LOCAL">
-        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
-        <mapping-file>META-INF/employee-orm.xml</mapping-file>
-        <exclude-unlisted-classes>true</exclude-unlisted-classes>
-        <validation-mode>CALLBACK</validation-mode>
-        <properties>
-            <property name="eclipselink.weaving" value="static"/>
-            <property name="javax.persistence.schema-generation.database.action" value="create"/>
-        </properties>
-    </persistence-unit>
-</persistence>
diff --git a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/employee-constraints.xml b/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/employee-constraints.xml
deleted file mode 100644
index cdba423..0000000
--- a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/employee-constraints.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd"
-	xmlns="http://jboss.org/xml/ns/javax/validation/mapping">
-	<default-package>org.eclipse.persistence.testing.models.jpa.beanvalidation</default-package>
-	<bean class="DynamicEmployee" ignore-annotations="true">
-		<getter name="name" ignore-annotations="true">
-			<constraint annotation="javax.validation.constraints.NotNull" />
-		</getter>
-		<getter name="surname" ignore-annotations="true">
-			<constraint annotation="javax.validation.constraints.NotNull" />
-		</getter>
-	</bean>
-</constraint-mappings>
\ No newline at end of file
diff --git a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/employee-orm.xml b/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/employee-orm.xml
deleted file mode 100644
index a4c0539..0000000
--- a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/employee-orm.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<entity-mappings version="2.1"
-	xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
-	<package>org.eclipse.persistence.testing.models.jpa.beanvalidation</package>
-
-	<entity class="DynamicEmployee" access="VIRTUAL">
-		<attributes>
-			<id name="id" attribute-type="Integer">
-				<generated-value strategy="SEQUENCE" generator="employee-generator" />
-				<sequence-generator name="employee-generator" sequence-name="DYN_EMP_SEQ" />
-			</id>
-			<basic name="name" attribute-type="String"/>
-			<basic name="surname" attribute-type="String"/>
-			<version name="version" attribute-type="Long"/>
-		</attributes>
-	</entity>
-
-</entity-mappings>
diff --git a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/persistence.xml b/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/persistence.xml
deleted file mode 100644
index 5a35000..0000000
--- a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/persistence.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_2_0.xsd" version="2.0">
-    <persistence-unit name="%%default%%" transaction-type="%%transaction-type%%">
-        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
-        <%%datasource-type%%>%%data-source-name%%</%%datasource-type%%>
-        <mapping-file>META-INF/employee-orm.xml</mapping-file>
-        <exclude-unlisted-classes>true</exclude-unlisted-classes>
-        <validation-mode>CALLBACK</validation-mode>
-        <properties>
-            <property name="eclipselink.target-server" value="%%server-platform%%"/>
-            <property name="eclipselink.target-database" value="%%database-platform%%"/>
-            <property name="eclipselink.weaving" value="static"/>
-            <property name="eclipselink.validate-existence" value="true"/>
-            <property name="eclipselink.logging.logger" value="DefaultLogger"/>
-            <property name="eclipselink.jdbc.allow-native-sql-queries" value="true"/>
-            <property name="javax.persistence.schema-generation.database.action" value="create"/>
-        </properties>
-    </persistence-unit>
-</persistence>
diff --git a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/validation.xml b/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/validation.xml
deleted file mode 100644
index 434c8d2..0000000
--- a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/server/validation.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<validation-config version="1.1" xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">
-    <default-provider>org.hibernate.validator.HibernateValidator</default-provider>
-    <message-interpolator>org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator</message-interpolator>
-    <traversable-resolver>org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver</traversable-resolver>
-    <constraint-validator-factory>org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorFactoryImpl</constraint-validator-factory>
-    <constraint-mapping>META-INF/employee-constraints.xml</constraint-mapping>
-</validation-config>
diff --git a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/validation.xml b/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/validation.xml
deleted file mode 100644
index 434c8d2..0000000
--- a/jpa/eclipselink.jpa.test/resource/eclipselink-beanvalidation-dynamic-model/validation.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<validation-config version="1.1" xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">
-    <default-provider>org.hibernate.validator.HibernateValidator</default-provider>
-    <message-interpolator>org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator</message-interpolator>
-    <traversable-resolver>org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver</traversable-resolver>
-    <constraint-validator-factory>org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorFactoryImpl</constraint-validator-factory>
-    <constraint-mapping>META-INF/employee-constraints.xml</constraint-mapping>
-</validation-config>
diff --git a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/beanvalidation/dynamic/BeanValidationDynamicEntityJunitTest.java b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/beanvalidation/dynamic/BeanValidationDynamicEntityJunitTest.java
deleted file mode 100644
index dcb0014..0000000
--- a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/beanvalidation/dynamic/BeanValidationDynamicEntityJunitTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
- * which accompanies this distribution.
- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- ******************************************************************************/
-package org.eclipse.persistence.testing.tests.jpa.beanvalidation.dynamic;
-
-import java.util.*;
-
-import javax.persistence.*;
-import javax.validation.ConstraintViolationException;
-import javax.validation.ConstraintViolation;
-
-import junit.framework.*;
-
-import junit.framework.Test;
-import org.eclipse.persistence.config.PersistenceUnitProperties;
-import org.eclipse.persistence.descriptors.ClassDescriptor;
-import org.eclipse.persistence.dynamic.DynamicClassLoader;
-import org.eclipse.persistence.dynamic.DynamicEntity;
-import org.eclipse.persistence.dynamic.DynamicType;
-import org.eclipse.persistence.internal.jpa.config.metadata.ReflectiveDynamicClassLoader;
-import org.eclipse.persistence.jpa.dynamic.JPADynamicHelper;
-import org.eclipse.persistence.testing.framework.junit.JUnitTestCase;
-import org.junit.Assert;
-
-public class BeanValidationDynamicEntityJunitTest extends JUnitTestCase {
-
-    public BeanValidationDynamicEntityJunitTest() {
-        super();
-    }
-
-    public BeanValidationDynamicEntityJunitTest(String name) {
-        super(name);
-    }
-
-    public static Test suite() {
-        TestSuite suite = new TestSuite();
-        suite.setName("BeanValidationDynamicEntityJunitTest");
-        if (! JUnitTestCase.isJPA10()) {
-            suite.addTest(new BeanValidationDynamicEntityJunitTest("testPersistDynamicEntityWithInvalidData"));
-        }
-        return suite;
-    }
-
-    /**
-     * Strategy:
-     * 1. Persist a dynamic entity with invalid values
-     * 2. Assert - a ConstraintViolationException is raised
-     * 3. Assert - transaction is rolled back
-     * 4. Assert - The validation exception is due to invalid value given by us.
-     */
-    @SuppressWarnings("unchecked")
-    public void testPersistDynamicEntityWithInvalidData() {        
-        // Create an entity manager factory with a dynamic class loader.
-        DynamicClassLoader dcl = new ReflectiveDynamicClassLoader(Thread.currentThread().getContextClassLoader());
-        Map<String,Object> properties = new HashMap<>(getPersistenceProperties());
-        properties.put(PersistenceUnitProperties.CLASSLOADER, dcl);
-//        properties.put(PersistenceUnitProperties.BEAN_VALIDATION_NO_OPTIMISATION, "true");
-        EntityManager em = createEntityManager("beanvalidation-dynamic", properties);
-        EntityManagerFactory entityManagerFactory = em.getEntityManagerFactory();
-
-        // Create types
-        JPADynamicHelper helper = new JPADynamicHelper(entityManagerFactory);
-        
-        DynamicType empType = helper.getType("DynamicEmployee");
-        ClassDescriptor empTypeDescriptor = empType.getDescriptor();
-        DynamicEntity employee = (DynamicEntity) empTypeDescriptor.getInstantiationPolicy().buildNewInstance();
-
-        employee.set("name", "Bob");
-        employee.set("surname", "Smith");
-
-        try {
-            beginTransaction(em);
-            em.persist(employee);
-            commitTransaction(em);
-        } catch (Exception e) {
-            if (isTransactionActive(em)) {
-                rollbackTransaction(em);
-            }
-            closeEntityManager(em);
-            Assert.fail(e.getMessage());
-        }
-        Integer employeeId = employee.<Integer>get("id");
-        assertTrue("Employee id not set!", employeeId > 0);
-
-        DynamicEntity emp = em.find(empType.getJavaClass(), employeeId);
-
-        emp.set("name", null);
-        emp.set("surname", null);
-
-        try {
-            beginTransaction(em);
-            em.flush();
-        } catch (ConstraintViolationException e) {
-            System.out.println("ConstraintException: " + e.getMessage());
-            for (ConstraintViolation<?> cv : e.getConstraintViolations()) {
-                System.out.println("\t>> " + cv.getPropertyPath() + "::" + cv.getMessage());
-            }
-            return;
-        } finally {
-            if (isTransactionActive(em)) {
-                rollbackTransaction(em);
-            }
-            closeEntityManager(em);
-        }
-        Assert.fail("ConstraintViolationException not thrown");
-    }
-
-//    public String getPersistenceUnitName() {
-//        return "beanvalidation-dynamic";
-//    }
-}
diff --git a/jpa/org.eclipse.persistence.jpa/META-INF/MANIFEST.MF b/jpa/org.eclipse.persistence.jpa/META-INF/MANIFEST.MF
index 638a59ee..94b19a9 100644
--- a/jpa/org.eclipse.persistence.jpa/META-INF/MANIFEST.MF
+++ b/jpa/org.eclipse.persistence.jpa/META-INF/MANIFEST.MF
@@ -55,7 +55,6 @@
  javax.transaction.xa;version="1.1.0";resolution:=optional,
  javax.validation;resolution:=optional,
  javax.validation.groups;resolution:=optional,
- javax.validation.metadata;resolution:=optional,
  javax.xml.parsers;resolution:=optional,
  javax.xml.transform;resolution:=optional,
  javax.xml.transform.stream;resolution:=optional,
diff --git a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/beanvalidation/BeanValidationHelper.java b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/beanvalidation/BeanValidationHelper.java
new file mode 100644
index 0000000..3d96236
--- /dev/null
+++ b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/beanvalidation/BeanValidationHelper.java
@@ -0,0 +1,196 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ *     Marcel Valovy - 2.6 - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.persistence.internal.jpa.metadata.beanvalidation;
+
+import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * INTERNAL:
+ *
+ * Utility class for bean validation related tasks.
+ *  - Singleton.
+ *  - Thread-safe.
+ */
+public enum BeanValidationHelper {
+    BEAN_VALIDATION_HELPER;
+
+    /**
+     * # default constraints in {@link #KNOWN_CONSTRAINTS} map.
+     *
+     * The value reflects the number of default constraints; if
+     * more default constraints are added, update the value.
+     */
+    private static final int DEFAULT_CONSTRAINTS_QUANTITY = 25;
+
+    /**
+     * Load factor for concurrent maps.
+     */
+    private static final float LOAD_FACTOR = 0.75f;
+
+    /**
+     * Size parameter for {@link #KNOWN_CONSTRAINTS} map.
+     */
+    private static final int KNOWN_CONSTRAINTS_DEFAULT_SIZE = nextPowerOfTwo(
+            (int) (DEFAULT_CONSTRAINTS_QUANTITY / LOAD_FACTOR));
+
+    /**
+     * Set of all default BeanValidation field annotations and discovered custom field constraints.
+     * Implemented as a ConcurrentHashMap with "Null Object" idiom.
+     */
+    private static final Set<String> KNOWN_CONSTRAINTS = Collections.newSetFromMap(new ConcurrentHashMap<String,
+            Boolean>( KNOWN_CONSTRAINTS_DEFAULT_SIZE, LOAD_FACTOR ));
+
+    /**
+     * Map of all classes that have undergone check for bean validation constraints.
+     * Maps the key with boolean value telling whether the class contains an annotation from {@link #KNOWN_CONSTRAINTS}.
+     */
+    private static final Map<Class<?>, Boolean> CONSTRAINTS_ON_CLASSES = Collections.synchronizedMap(new
+            WeakHashMap<Class<?>, Boolean>());
+
+    static {
+        initializeKnownConstraints();
+    }
+
+    /**
+     * Tells whether any of the class's fields are constrained by Bean Validation annotations or custom constraints.
+     *
+     * @param clazz checked class
+     * @return true or false
+     */
+    public boolean isConstrained(Class<?> clazz) {
+        Boolean annotated = CONSTRAINTS_ON_CLASSES.get(clazz);
+        if (annotated == null) {
+            annotated = detectConstraints(clazz);
+            CONSTRAINTS_ON_CLASSES.put(clazz, annotated);
+        }
+        return annotated;
+    }
+
+    /**
+     * INTERNAL:
+     * Reveals whether any of the class's fields are constrained by Bean Validation annotations or custom constraints.
+     * Uses reflection.
+     * @see Class#getDeclaredFields
+     */
+    private Boolean detectConstraints(Class<?> clazz) {
+        for (Field f : getDeclaredFields(clazz)) {
+            for (Annotation a : f.getDeclaredAnnotations()) {
+                final Class<? extends Annotation> type = a.annotationType();
+                final String typeCanonicalName = type.getCanonicalName();
+
+                if (KNOWN_CONSTRAINTS.contains(typeCanonicalName)) {
+                    return true;
+                }
+
+                // Check for custom annotations on the field (+ check inheritance on class annotations).
+                // Custom bean validation annotation is defined by having @Constraint annotation on its class.
+                for (Annotation typesClassAnnotation : type.getAnnotations()) {
+                    final Class<? extends Annotation> classAnnotationType = typesClassAnnotation.annotationType();
+                    if ("javax.validation.Constraint".equals(classAnnotationType.getCanonicalName())) {
+                        // Avoid adding anonymous class constraints.
+                        if (typeCanonicalName != null) {
+                            KNOWN_CONSTRAINTS.add(typeCanonicalName);
+                        }
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Retrieves declared fields.
+     * <p/>
+     * If security is enabled, makes {@linkplain java.security.AccessController#doPrivileged(PrivilegedAction)
+     * privileged calls}.
+     *
+     * @param clazz fields of that class will be returned
+     * @return array of declared fields
+     * @see Class#getDeclaredFields()
+     */
+    private Field[] getDeclaredFields(final Class<?> clazz) {
+        return PrivilegedAccessHelper.shouldUsePrivilegedAccess()
+                ? AccessController.doPrivileged(
+                new PrivilegedAction<Field[]>() {
+                    @Override
+                    public Field[] run() {
+                        return clazz.getDeclaredFields();
+                    }
+                })
+                : PrivilegedAccessHelper.getDeclaredFields(clazz);
+    }
+
+    /**
+     * Adds canonical names of bean validation constraints into set of known constraints (internally represented by
+     * map).
+     * Canonical name is the name that would be used in an import statement and uniquely identifies the class,
+     * i.e. anonymous classes receive a 'null' value as their canonical name,
+     * which allows no ambiguity and is what we are looking for.
+     */
+    private static void initializeKnownConstraints() {
+        KNOWN_CONSTRAINTS.add("javax.validation.Valid");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.Max");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.Min");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.DecimalMax");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.DecimalMin");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.Digits");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.NotNull");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.Pattern");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.Size");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.AssertTrue");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.AssertFalse");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.Future");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.Past");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.Max");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.Min");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.DecimalMax");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.DecimalMin");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.Digits");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.NotNull");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.Pattern");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.Size");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.AssertTrue");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.AssertFalse");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.Future");
+        KNOWN_CONSTRAINTS.add("javax.validation.constraints.List.Past");
+    }
+
+
+    /**
+     * Calculate the next power of 2, greater than or equal to x.<p>
+     * From Hacker's Delight, Chapter 3, Harry S. Warren Jr.
+     *
+     * @param x integer greater than 0
+     * @return next power of two
+     */
+    private static int nextPowerOfTwo(int x) {
+        assert x > 0;
+        x |= --x >> 1;
+        x |= x >> 2;
+        x |= x >> 4;
+        x |= x >> 8;
+        x |= x >> 16;
+        return x + 1;
+    }
+}
diff --git a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/listeners/BeanValidationListener.java b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/listeners/BeanValidationListener.java
index 82a0e64..045f7f3 100644
--- a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/listeners/BeanValidationListener.java
+++ b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/listeners/BeanValidationListener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2016 Sun Microsystems, Inc, IBM Corporation. All rights reserved.
+ * Copyright (c) 2009, 2015 Sun Microsystems, Inc, IBM Corporation. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  * which accompanies this distribution.
@@ -11,8 +11,6 @@
  *     08/20/2014-2.5 Rick Curtis
  *       - 441890: Cache Validator instances.
  *     Marcel Valovy - 2.6 - skip validation of objects that are not constrained.
- *     02/17/2016-2.6 Dalia Abo Sheasha
- *       - 487889: Fix EclipseLink Bean Validation optimization 
  ******************************************************************************/
 
 package org.eclipse.persistence.internal.jpa.metadata.listeners;
@@ -25,7 +23,6 @@
 import javax.validation.ValidatorFactory;
 import javax.validation.groups.Default;
 
-import org.eclipse.persistence.config.PersistenceUnitProperties;
 import org.eclipse.persistence.descriptors.DescriptorEventAdapter;
 import org.eclipse.persistence.descriptors.DescriptorEvent;
 import org.eclipse.persistence.descriptors.ClassDescriptor;
@@ -39,6 +36,8 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.lang.annotation.ElementType;
 
+import static org.eclipse.persistence.internal.jpa.metadata.beanvalidation.BeanValidationHelper.BEAN_VALIDATION_HELPER;
+
 /**
  * Responsible for performing automatic bean validation on call back events.
  * @author Mitesh Meswani
@@ -98,9 +97,7 @@
 
     private void validateOnCallbackEvent(DescriptorEvent event, String callbackEventName, Class[] validationGroup) {
         Object source = event.getSource();
-        boolean noOptimization = "true".equalsIgnoreCase((String) event.getSession().getProperty(PersistenceUnitProperties.BEAN_VALIDATION_NO_OPTIMISATION));
-        boolean isBeanConstrained = getValidator(event).getConstraintsForClass(source.getClass()).isBeanConstrained();
-        boolean shouldValidate = noOptimization || isBeanConstrained;
+        boolean shouldValidate = BEAN_VALIDATION_HELPER.isConstrained(source.getClass());
         if (shouldValidate) {
             Set<ConstraintViolation<Object>> constraintViolations = getValidator(event).validate(source, validationGroup);
             if (constraintViolations.size() > 0) {
