diff --git a/build.versions b/build.versions
index 2e00c16..cd54280 100644
--- a/build.versions
+++ b/build.versions
@@ -51,7 +51,7 @@
 org.apache.juli.extras=7.0.35.v201302120746
 org.apache.mina.core=2.0.2.v201108120515
 org.apache.openejb.api=4.0.0.beta-2_v201205041047
-org.apache.openejb.core=4.0.0.beta-2_v201205260545-virgo-1
+org.apache.openejb.core=4.0.0.beta-2_v201205260545-virgo-4
 org.apache.openejb.javaagent=4.0.0.beta-2_v201205041047
 org.apache.openejb.jee=4.0.0.beta-2_v201205041336
 org.apache.openejb.loader=4.0.0.beta-2_v201205041336
@@ -128,6 +128,7 @@
 org.eclipse.persistence.core=2.4.1.v20121003-ad44345
 org.eclipse.persistence.jpa.jpql=2.0.1.v20121003-ad44345
 org.eclipse.persistence.jpa=2.4.1.v20121003-ad44345
+org.eclipse.virgo.openejb.jpa.integration=4.0.0.beta-2_v201205260545
 org.glassfish.com.sun.faces=2.1.6.v201205171319-virgo-2
 org.glassfish.javax.faces=2.1.6.v201210041257
 org.ow2.jotm.jotm-core=2.1.9.v201204271116
diff --git a/hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-3.jar b/hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-4.jar
similarity index 77%
rename from hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-3.jar
rename to hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-4.jar
index ae6fb5e..f73b56c 100755
--- a/hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-3.jar
+++ b/hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-4.jar
Binary files differ
diff --git a/hotfix/plugins/org.eclipse.virgo.openejb.jpa.integration_4.0.0.beta-2_v201205260545.jar b/hotfix/plugins/org.eclipse.virgo.openejb.jpa.integration_4.0.0.beta-2_v201205260545.jar
new file mode 100755
index 0000000..3ce30a8
--- /dev/null
+++ b/hotfix/plugins/org.eclipse.virgo.openejb.jpa.integration_4.0.0.beta-2_v201205260545.jar
Binary files differ
diff --git a/hotfix/source/openejb-core/README.txt b/hotfix/source/openejb-core/README.txt
index 83111c0..8f25f1f 100755
--- a/hotfix/source/openejb-core/README.txt
+++ b/hotfix/source/openejb-core/README.txt
@@ -5,7 +5,10 @@
 After successful build patch the Bundle-Version and jar name to something like this increasing the current version at the back:
 org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-2
 
-Add "Exposed-ContentType: Implementation" and "DynamicImport-Package: *" to the manifest of the newly built openejb-core jar or better yet copy the entire manifest from the old hot fix jar into the new one.
+Add "Exposed-ContentType: Implementation" to the manifest of the newly built openejb-core jar or better yet copy the entire manifest from the old hot fix jar into the new one.
 
 Original code is submitted in src.original and can also be found at:
-http://svn.apache.org/repos/asf/openejb/tags/openejb-4.0.0-beta-2/
\ No newline at end of file
+http://svn.apache.org/repos/asf/openejb/tags/openejb-4.0.0-beta-2/
+
+Remove from org/apache/openejb subfolder in the jar the folders eclipselink, hibernate and toplink - the classes from these folders are placed in
+a separate jar, org.eclipse.virgo.openejb.jpa.integration_4.0.0.beta-2_v201205260545.jar
\ No newline at end of file
diff --git a/hotfix/source/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java b/hotfix/source/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
index 40be8af..fa5b385 100755
--- a/hotfix/source/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
+++ b/hotfix/source/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
@@ -16,6 +16,22 @@
  */
 package org.apache.openejb.config;
 
+import static org.apache.openejb.util.URLs.toFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import javax.xml.bind.JAXBException;
+
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.ClientInfo;
@@ -65,21 +81,6 @@
 import org.apache.openejb.util.Messages;
 import org.apache.openejb.util.References;
 
-import javax.xml.bind.JAXBException;
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import static org.apache.openejb.util.URLs.toFile;
-
 /**
  * @version $Rev: 1214977 $ $Date: 2011-12-15 14:40:42 -0800 (Thu, 15 Dec 2011) $
  */
@@ -571,17 +572,22 @@
         public static final String JTADATASOURCE_PROP = "javax.persistence.jtaDataSource";
         public static final String NON_JTADATASOURCE_PROP = "javax.persistence.nonJtaDataSource";
         private static final String DEFAULT_PERSISTENCE_PROVIDER = "org.apache.openjpa.persistence.PersistenceProviderImpl";
+		public static final String FORCE_PROVIDER_ENV = "openejb.jpa.force."
+				+ PROVIDER_PROP;
 
         public static final String HIBERNATE_TRANSACTION_MANAGER_LOOKUP_CLASS = "hibernate.transaction.manager_lookup_class";
         public static final String HIBERNATE_JTA_PLATFORM = "hibernate.transaction.jta.platform";
 
         private static String providerEnv;
+		private static boolean forceProviderEnv;
         private static String transactionTypeEnv;
         private static String jtaDataSourceEnv;
         private static String nonJtaDataSourceEnv;
 
         static {
             providerEnv = System.getProperty(PROVIDER_PROP);
+			forceProviderEnv = Boolean.valueOf(System.getProperty(
+					FORCE_PROVIDER_ENV, "true"));
             transactionTypeEnv = System.getProperty(TRANSACTIONTYPE_PROP);
             jtaDataSourceEnv = System.getProperty(JTADATASOURCE_PROP);
             nonJtaDataSourceEnv = System.getProperty(NON_JTADATASOURCE_PROP);
@@ -693,7 +699,8 @@
         }
 
         private static void overrideFromSystemProp(PersistenceUnitInfo info) {
-            if (providerEnv != null) {
+			if (providerEnv != null
+					&& (info.provider == null || forceProviderEnv)) {
                 info.provider = providerEnv;
             }
             if (info.provider == null) {
