diff --git a/jpa/employee/employee.dynamic/.classpath b/jpa/employee.dynamic/.classpath
similarity index 100%
rename from jpa/employee/employee.dynamic/.classpath
rename to jpa/employee.dynamic/.classpath
diff --git a/jpa/employee/employee.dynamic/.project b/jpa/employee.dynamic/.project
similarity index 100%
rename from jpa/employee/employee.dynamic/.project
rename to jpa/employee.dynamic/.project
diff --git a/jpa/employee/employee.dynamic/.settings/org.eclipse.core.resources.prefs b/jpa/employee.dynamic/.settings/org.eclipse.core.resources.prefs
similarity index 100%
rename from jpa/employee/employee.dynamic/.settings/org.eclipse.core.resources.prefs
rename to jpa/employee.dynamic/.settings/org.eclipse.core.resources.prefs
diff --git a/jpa/employee/employee.dynamic/.settings/org.eclipse.jdt.core.prefs b/jpa/employee.dynamic/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from jpa/employee/employee.dynamic/.settings/org.eclipse.jdt.core.prefs
rename to jpa/employee.dynamic/.settings/org.eclipse.jdt.core.prefs
diff --git a/jpa/employee/employee.dynamic/.settings/org.eclipse.jpt.core.prefs b/jpa/employee.dynamic/.settings/org.eclipse.jpt.core.prefs
similarity index 100%
rename from jpa/employee/employee.dynamic/.settings/org.eclipse.jpt.core.prefs
rename to jpa/employee.dynamic/.settings/org.eclipse.jpt.core.prefs
diff --git a/jpa/employee/employee.dynamic/.settings/org.eclipse.m2e.core.prefs b/jpa/employee.dynamic/.settings/org.eclipse.m2e.core.prefs
similarity index 100%
rename from jpa/employee/employee.dynamic/.settings/org.eclipse.m2e.core.prefs
rename to jpa/employee.dynamic/.settings/org.eclipse.m2e.core.prefs
diff --git a/jpa/employee/employee.dynamic/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/jpa/employee.dynamic/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
similarity index 100%
rename from jpa/employee/employee.dynamic/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
rename to jpa/employee.dynamic/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
diff --git a/jpa/employee/employee.dynamic/.settings/org.eclipse.wst.common.project.facet.core.xml b/jpa/employee.dynamic/.settings/org.eclipse.wst.common.project.facet.core.xml
similarity index 100%
rename from jpa/employee/employee.dynamic/.settings/org.eclipse.wst.common.project.facet.core.xml
rename to jpa/employee.dynamic/.settings/org.eclipse.wst.common.project.facet.core.xml
diff --git a/jpa/employee/employee.dynamic/pom.xml b/jpa/employee.dynamic/pom.xml
similarity index 100%
rename from jpa/employee/employee.dynamic/pom.xml
rename to jpa/employee.dynamic/pom.xml
diff --git a/jpa/employee/employee.dynamic/src/main/java/org/eclipse/persistence/dynamic/ReflectiveDynamicClassLoader.java b/jpa/employee.dynamic/src/main/java/org/eclipse/persistence/dynamic/ReflectiveDynamicClassLoader.java
similarity index 100%
rename from jpa/employee/employee.dynamic/src/main/java/org/eclipse/persistence/dynamic/ReflectiveDynamicClassLoader.java
rename to jpa/employee.dynamic/src/main/java/org/eclipse/persistence/dynamic/ReflectiveDynamicClassLoader.java
diff --git a/jpa/employee/employee.dynamic/src/main/resources/META-INF/employee-constraints.xml b/jpa/employee.dynamic/src/main/resources/META-INF/employee-constraints.xml
similarity index 100%
rename from jpa/employee/employee.dynamic/src/main/resources/META-INF/employee-constraints.xml
rename to jpa/employee.dynamic/src/main/resources/META-INF/employee-constraints.xml
diff --git a/jpa/employee/employee.dynamic/src/main/resources/META-INF/employee-orm.xml b/jpa/employee.dynamic/src/main/resources/META-INF/employee-orm.xml
similarity index 100%
rename from jpa/employee/employee.dynamic/src/main/resources/META-INF/employee-orm.xml
rename to jpa/employee.dynamic/src/main/resources/META-INF/employee-orm.xml
diff --git a/jpa/employee/employee.dynamic/src/main/resources/META-INF/persistence.xml b/jpa/employee.dynamic/src/main/resources/META-INF/persistence.xml
similarity index 100%
rename from jpa/employee/employee.dynamic/src/main/resources/META-INF/persistence.xml
rename to jpa/employee.dynamic/src/main/resources/META-INF/persistence.xml
diff --git a/jpa/employee/employee.dynamic/src/main/resources/META-INF/validation.xml b/jpa/employee.dynamic/src/main/resources/META-INF/validation.xml
similarity index 100%
rename from jpa/employee/employee.dynamic/src/main/resources/META-INF/validation.xml
rename to jpa/employee.dynamic/src/main/resources/META-INF/validation.xml
diff --git a/jpa/employee/employee.dynamic/src/test/java/example/EmployeeDynamicMappings.java b/jpa/employee.dynamic/src/test/java/example/EmployeeDynamicMappings.java
similarity index 100%
rename from jpa/employee/employee.dynamic/src/test/java/example/EmployeeDynamicMappings.java
rename to jpa/employee.dynamic/src/test/java/example/EmployeeDynamicMappings.java
diff --git a/jpa/employee/employee.dynamic/src/test/java/example/PersistenceHelper.java b/jpa/employee.dynamic/src/test/java/example/PersistenceHelper.java
similarity index 100%
rename from jpa/employee/employee.dynamic/src/test/java/example/PersistenceHelper.java
rename to jpa/employee.dynamic/src/test/java/example/PersistenceHelper.java
diff --git a/jpa/employee/employee.dynamic/src/test/java/example/Queries.java b/jpa/employee.dynamic/src/test/java/example/Queries.java
similarity index 100%
rename from jpa/employee/employee.dynamic/src/test/java/example/Queries.java
rename to jpa/employee.dynamic/src/test/java/example/Queries.java
diff --git a/jpa/employee/employee.dynamic/src/test/java/example/Samples.java b/jpa/employee.dynamic/src/test/java/example/Samples.java
similarity index 100%
rename from jpa/employee/employee.dynamic/src/test/java/example/Samples.java
rename to jpa/employee.dynamic/src/test/java/example/Samples.java
diff --git a/jpa/employee/employee.dynamic/src/test/java/example/Transactions.java b/jpa/employee.dynamic/src/test/java/example/Transactions.java
similarity index 100%
rename from jpa/employee/employee.dynamic/src/test/java/example/Transactions.java
rename to jpa/employee.dynamic/src/test/java/example/Transactions.java
diff --git a/jpa/employee/employee.dynamic/src/test/java/tests/TestDynamicUsingAPI.java b/jpa/employee.dynamic/src/test/java/tests/TestDynamicUsingAPI.java
similarity index 100%
rename from jpa/employee/employee.dynamic/src/test/java/tests/TestDynamicUsingAPI.java
rename to jpa/employee.dynamic/src/test/java/tests/TestDynamicUsingAPI.java
diff --git a/jpa/employee/employee.dynamic/src/test/java/tests/TestDynamicUsingXML.java b/jpa/employee.dynamic/src/test/java/tests/TestDynamicUsingXML.java
similarity index 100%
rename from jpa/employee/employee.dynamic/src/test/java/tests/TestDynamicUsingXML.java
rename to jpa/employee.dynamic/src/test/java/tests/TestDynamicUsingXML.java
diff --git a/jpa/employee/employee.model-nosql/.gitignore b/jpa/employee/employee.model-nosql/.gitignore
deleted file mode 100644
index 5e56e04..0000000
--- a/jpa/employee/employee.model-nosql/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/bin
diff --git a/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/model/Address.java b/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/model/Address.java
index 91daa13..c88c514 100644
--- a/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/model/Address.java
+++ b/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/model/Address.java
@@ -13,12 +13,20 @@
  ******************************************************************************/
 package eclipselink.example.jpa.employee.model;
 
-import javax.persistence.*;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Version;
 
-import org.eclipse.persistence.annotations.FetchGroup;
+import org.eclipse.persistence.annotations.Cache;
 
-@FetchGroup(name="1", attributes={})
 @Entity
+@Cache(refreshOnlyIfNewer=true)
 public class Address {
     @Id
     @Column(name = "ADDRESS_ID")
@@ -42,6 +50,9 @@
     
     @Basic
     private String street;
+    
+    @Version
+    private long version;
 
     public Address() {
     }
@@ -102,4 +113,12 @@
     public void setStreet(String street) {
         this.street = street;
     }
+
+    public long getVersion() {
+        return version;
+    }
+
+    public void setVersion(long version) {
+        this.version = version;
+    }
 }
diff --git a/jpa/employee/employee.model/src/main/java/resources/application.properties b/jpa/employee/employee.model/src/main/java/resources/application.properties
deleted file mode 100644
index 66eed33..0000000
--- a/jpa/employee/employee.model/src/main/java/resources/application.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# -- welcome --
-welcomeTitle=JSF Blank Application
-
-welcomeHeading=Welcome!
-
-welcomeMessage=This is a JSF blank application. \
-	You can find the application.properties file with this message in the src/resources folder.
diff --git a/jpa/employee/employee.model/src/test/java/test/PessimisticLockTest.java b/jpa/employee/employee.model/src/test/java/test/PessimisticLockTest.java
index 7bbeeb2..1762946 100644
--- a/jpa/employee/employee.model/src/test/java/test/PessimisticLockTest.java
+++ b/jpa/employee/employee.model/src/test/java/test/PessimisticLockTest.java
@@ -16,8 +16,16 @@
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.LockModeType;
 
+import org.eclipse.persistence.descriptors.ClassDescriptor;
+import org.eclipse.persistence.jpa.JpaHelper;
+import org.eclipse.persistence.queries.ReadObjectQuery;
+import org.eclipse.persistence.queries.ReportQuery;
+import org.eclipse.persistence.sessions.UnitOfWork;
+import org.eclipse.persistence.sessions.server.ClientSession;
+import org.eclipse.persistence.sessions.server.Server;
 import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -47,13 +55,13 @@
         Assert.assertNotNull(addr);
         Assert.assertNull(addr.getCity());
         Assert.assertEquals(em.getLockMode(addr), LockModeType.PESSIMISTIC_WRITE);
-        
+
         addr.setCity("Ottawa");
 
         Assert.assertNotNull(addr.getCity());
-        
+
         em.lock(addr, LockModeType.PESSIMISTIC_WRITE);
-        
+
         Assert.assertEquals(em.getLockMode(addr), LockModeType.PESSIMISTIC_WRITE);
         Assert.assertNotNull(addr.getCity());
 
@@ -62,6 +70,157 @@
         em.close();
     }
 
+    @Test
+    public void testRefreshIfNewerTXN() {
+        EntityManager em = getEmf().createEntityManager();
+
+        int id = em.createQuery("SELECT a.id FROM Address a", Number.class).getSingleResult().intValue();
+
+        em.getTransaction().begin();
+
+        Address addr = em.find(Address.class, id);
+
+        Assert.assertNotNull(addr);
+        Assert.assertNull(addr.getCity());
+
+        addr.setCity("Ottawa");
+
+        Assert.assertNotNull(addr.getCity());
+
+        em.refresh(addr);
+
+        Assert.assertNotNull(addr.getCity());
+
+        em.getTransaction().rollback();
+
+        em.close();
+    }
+
+    @Test
+    public void testRefreshIfNewer() {
+        EntityManager em = getEmf().createEntityManager();
+
+        int id = em.createQuery("SELECT a.id FROM Address a", Number.class).getSingleResult().intValue();
+
+        Address addr = em.find(Address.class, id);
+
+        Assert.assertNotNull(addr);
+        Assert.assertNull(addr.getCity());
+
+        addr.setCity("Ottawa");
+
+        Assert.assertNotNull(addr.getCity());
+
+        em.refresh(addr);
+
+        Assert.assertNotNull(addr.getCity());
+
+        em.close();
+    }
+
+    @Test
+    public void testRefreshIfNewerNativeServer() {
+        Server session = JpaHelper.getServerSession(getEmf());
+
+        ReportQuery idQuery = new ReportQuery();
+        idQuery.setReferenceClass(Address.class);
+        idQuery.addAttribute("id");
+        idQuery.setShouldReturnSingleAttribute(true);
+        idQuery.setShouldReturnSingleValue(true);
+
+        int id = ((Number) session.executeQuery(idQuery)).intValue();
+
+        ReadObjectQuery addrQuery = new ReadObjectQuery();
+        addrQuery.setReferenceClass(Address.class);
+        addrQuery.setSelectionCriteria(addrQuery.getExpressionBuilder().get("id").equal(id));
+
+        Address addr = (Address) session.executeQuery(addrQuery);
+
+        Assert.assertNotNull(addr);
+        Assert.assertNull(addr.getCity());
+
+        addr.setCity("Ottawa");
+
+        Assert.assertNotNull(addr.getCity());
+
+        session.refreshObject(addr);
+
+        Assert.assertNotNull(addr.getCity());
+
+    }
+
+    @Test
+    public void testRefreshIfNewerNativeClientSession() {
+        Server session = JpaHelper.getServerSession(getEmf());
+        ClientSession cs = session.acquireClientSession();
+
+        ReportQuery idQuery = new ReportQuery();
+        idQuery.setReferenceClass(Address.class);
+        idQuery.addAttribute("id");
+        idQuery.setShouldReturnSingleAttribute(true);
+        idQuery.setShouldReturnSingleValue(true);
+
+        int id = ((Number) cs.executeQuery(idQuery)).intValue();
+
+        ReadObjectQuery addrQuery = new ReadObjectQuery();
+        addrQuery.setReferenceClass(Address.class);
+        addrQuery.setSelectionCriteria(addrQuery.getExpressionBuilder().get("id").equal(id));
+
+        Address addr = (Address) cs.executeQuery(addrQuery);
+
+        Assert.assertNotNull(addr);
+        Assert.assertNull(addr.getCity());
+
+        addr.setCity("Ottawa");
+
+        Assert.assertNotNull(addr.getCity());
+
+        cs.refreshObject(addr);
+
+        Assert.assertNotNull(addr.getCity());
+
+    }
+
+    @Test
+    public void testRefreshIfNewerNativeUOW() {
+        Server session = JpaHelper.getServerSession(getEmf());
+        UnitOfWork uow = session.acquireUnitOfWork();
+
+        ReportQuery idQuery = new ReportQuery();
+        idQuery.setReferenceClass(Address.class);
+        idQuery.addAttribute("id");
+        idQuery.setShouldReturnSingleAttribute(true);
+        idQuery.setShouldReturnSingleValue(true);
+
+        int id = ((Number) uow.executeQuery(idQuery)).intValue();
+
+        ReadObjectQuery addrQuery = new ReadObjectQuery();
+        addrQuery.setReferenceClass(Address.class);
+        addrQuery.setSelectionCriteria(addrQuery.getExpressionBuilder().get("id").equal(id));
+
+        Address addr = (Address) uow.executeQuery(addrQuery);
+
+        Assert.assertNotNull(addr);
+        Assert.assertNull(addr.getCity());
+
+        addr.setCity("Ottawa");
+
+        Assert.assertNotNull(addr.getCity());
+
+        uow.refreshObject(addr);
+
+        Assert.assertNotNull(addr.getCity());
+
+    }
+
+    @Test
+    public void verifyConfig() {
+        ClassDescriptor desc = JpaHelper.getServerSession(getEmf()).getClassDescriptorForAlias("Address");
+        Assert.assertNotNull(desc);
+
+        Assert.assertTrue(desc.getCachePolicy().shouldOnlyRefreshCacheIfNewerVersion());
+    }
+
     private static EntityManagerFactory emf;
 
     private static Diagnostics diagnostics;
@@ -98,4 +257,8 @@
         emf = null;
     }
 
+    @Before
+    public void clearCache() {
+        JpaHelper.getServerSession(getEmf()).getIdentityMapAccessor().initializeAllIdentityMaps();
+    }
 }
diff --git a/jpa/employee/wls-example.war b/jpa/employee/wls-example.war
deleted file mode 100644
index c5d2ee5..0000000
--- a/jpa/employee/wls-example.war
+++ /dev/null
Binary files differ
