data = new GroupData(oldGroup, true);
         assertSame(oldGroup, data.getGroup());
 
+        assertFalse(data.isUnchanged());
         assertTrue(data.isNew());
         assertFalse(data.isUpdated());
 
         data.update(newGroup);
+        assertFalse(data.isUnchanged());
         assertTrue(data.isNew());
         assertFalse(data.isUpdated());
         assertSame(newGroup, data.getGroup());
         // repeat with a new group
         newGroup = new PdpGroup(oldGroup);
         data.update(newGroup);
+        assertFalse(data.isUnchanged());
         assertTrue(data.isNew());
         assertFalse(data.isUpdated());
         assertSame(newGroup, data.getGroup());
 
     @Test
     public void testUpdateOnly() {
+        assertTrue(data.isUnchanged());
         assertFalse(data.isUpdated());
         assertSame(oldGroup, data.getGroup());
 
         data.update(newGroup);
 
+        assertFalse(data.isUnchanged());
         assertTrue(data.isUpdated());
         assertFalse(data.isNew());
         assertSame(newGroup, data.getGroup());
         // repeat
         newGroup = new PdpGroup(oldGroup);
         data.update(newGroup);
+        assertFalse(data.isUnchanged());
         assertTrue(data.isUpdated());
         assertFalse(data.isNew());
         assertSame(newGroup, data.getGroup());
 
     }
 
     @Test
-    public void testIsUnchanged_testAddRequests_testGetPdpStateChanges_testGetPdpUpdates() {
-        assertTrue(session.isUnchanged());
-
+    public void testAddRequests_testGetPdpStateChanges_testGetPdpUpdates() {
         // pre-load with a update and state-change for other PDPs
         PdpUpdate update2 = makeUpdate(PDP2);
         session.addUpdate(update2);
         PdpUpdate update = makeUpdate(PDP1);
         PdpStateChange change = makeStateChange(PDP1);
         session.addRequests(update, change);
-        assertFalse(session.isUnchanged());
         verifyRequests(update, update2, change, change3);
 
         /*
 
     @Test
     public void testCreate() throws Exception {
+        assertTrue(session.isUnchanged());
+
         session.create(group1);
         assertSame(group1, session.getGroup(group1.getName()));
+        assertFalse(session.isUnchanged());
 
         // can add another
         session.create(group2);
         assertSame(group1, session.getGroup(group1.getName()));
         assertSame(group2, session.getGroup(group2.getName()));
+        assertFalse(session.isUnchanged());
 
         // cannot overwrite
         assertThatIllegalStateException().isThrownBy(() -> session.create(group1))
 
     @Test
     public void testUpdate() throws Exception {
+        assertTrue(session.isUnchanged());
+
         // force the groups into the cache
         when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1, group2));
         session.getActivePdpGroupsByPolicyType(type);
         when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1));
         PdpGroup newgrp = new PdpGroup(group1);
         session.update(newgrp);
+        assertFalse(session.isUnchanged());
 
         // repeat
         newgrp = new PdpGroup(group1);
         session.update(newgrp);
+        assertFalse(session.isUnchanged());
 
         /*
          * try group 2
         when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group2));
         newgrp = new PdpGroup(group2);
         session.update(newgrp);
+        assertFalse(session.isUnchanged());
 
         // repeat
         newgrp = new PdpGroup(group2);
         session.update(newgrp);
+        assertFalse(session.isUnchanged());
     }
 
     @Test