Index: test/edu/ucsb/nceas/metacat/dataone/CNodeServiceTest.java
===================================================================
--- test/edu/ucsb/nceas/metacat/dataone/CNodeServiceTest.java	(revision 9335)
+++ test/edu/ucsb/nceas/metacat/dataone/CNodeServiceTest.java	(revision 9336)
@@ -1239,6 +1239,7 @@
           String str2 = "object2";
           String str3 = "object3";
   
+          Date date = new Date();
           //insert test documents with a series id
           Session session = getCNSession();
           Identifier guid = new Identifier();
@@ -1277,8 +1278,7 @@
           //update system metadata sucessfully
           SystemMetadata sysmeta1c = new SystemMetadata();
           BeanUtils.copyProperties(sysmeta1c, sysmeta1);
-          version = version.add(BigInteger.ONE);
-          sysmeta1c.setSerialVersion(version);
+          sysmeta1c.setDateSysMetadataModified(date);
           CNodeService.getInstance(request).updateSystemMetadata(session, guid, sysmeta1c);
           SystemMetadata metadata2 = CNodeService.getInstance(request).getSystemMetadata(session, seriesId);
           assertTrue(metadata2.getIdentifier().equals(guid));
@@ -1285,6 +1285,7 @@
           assertTrue(metadata2.getSeriesId().equals(seriesId));
           assertTrue(metadata2.getArchived().equals(true));
           assertTrue(metadata2.getChecksum().getValue().equals(metadata.getChecksum().getValue()));
+          assertTrue(metadata2.getDateSysMetadataModified().getTime() == date.getTime());
           
           SystemMetadata sysmeta2 = CNodeService.getInstance(request).getSystemMetadata(session, seriesId);
           version = sysmeta2.getSerialVersion();
Index: test/edu/ucsb/nceas/metacat/dataone/MNodeServiceTest.java
===================================================================
--- test/edu/ucsb/nceas/metacat/dataone/MNodeServiceTest.java	(revision 9335)
+++ test/edu/ucsb/nceas/metacat/dataone/MNodeServiceTest.java	(revision 9336)
@@ -2041,7 +2041,9 @@
         String str1 = "object1";
         String str2 = "object2";
         String str3 = "object3";
-
+        
+        Date date = new Date();
+        Thread.sleep(2000);
         //insert test documents with a series id
         Session session = getTestSession();
         Identifier guid = new Identifier();
@@ -2063,15 +2065,23 @@
         assertTrue(metadata.getSize().equals(sysmeta.getSize()));
         System.out.println("the identifier is "+guid.getValue());
         
-        
-        
+        Date current = sysmeta.getDateSysMetadataModified();
+        //updating system metadata failed since the date doesn't match
+        sysmeta.setArchived(true);
+        sysmeta.setDateSysMetadataModified(date);
+        try {
+            MNodeService.getInstance(request).updateSystemMetadata(session, guid, sysmeta);
+            fail("We shouldn't get there");
+        } catch (Exception e) {
+            assertTrue(e instanceof InvalidRequest);
+        }
         //update system metadata sucessfully
-        sysmeta.setArchived(true);
+        sysmeta.setDateSysMetadataModified(current);
         BigInteger serialVersion = metadata.getSerialVersion();
-        System.out.println("the current version is "+serialVersion.toString());
-        serialVersion = serialVersion.add(BigInteger.ONE);
-        System.out.println("the new version is "+serialVersion.toString());
-        sysmeta.setSerialVersion(serialVersion);
+        //System.out.println("the current version is "+serialVersion.toString());
+        //serialVersion = serialVersion.add(BigInteger.ONE);
+        //System.out.println("the new version is "+serialVersion.toString());
+        //sysmeta.setSerialVersion(serialVersion);
         MNodeService.getInstance(request).updateSystemMetadata(session, guid, sysmeta);
         SystemMetadata metadata2 = MNodeService.getInstance(request).getSystemMetadata(session, seriesId);
         assertTrue(metadata2.getIdentifier().equals(guid));
@@ -2078,6 +2088,7 @@
         assertTrue(metadata2.getSeriesId().equals(seriesId));
         assertTrue(metadata2.getArchived().equals(true));
         assertTrue(metadata2.getChecksum().getValue().equals(metadata.getChecksum().getValue()));
+        assertTrue(metadata2.getDateSysMetadataModified().getTime() > current.getTime());
         
         Identifier newId = new Identifier();
         newId.setValue("newValue");
@@ -2128,7 +2139,7 @@
         } catch (Exception e) {
             assertTrue(e instanceof InvalidRequest);
         }
-}
+    }
     
     public void testUpdateObsoletesAndObsoletedBy() throws Exception {
         String str1 = "object1";
