Index: src/edu/ucsb/nceas/metacat/MetacatHandler.java
===================================================================
--- src/edu/ucsb/nceas/metacat/MetacatHandler.java	(revision 6446)
+++ src/edu/ucsb/nceas/metacat/MetacatHandler.java	(revision 6447)
@@ -106,6 +106,7 @@
 import edu.ucsb.nceas.metacat.client.InsufficientKarmaException;
 import edu.ucsb.nceas.metacat.database.DBConnection;
 import edu.ucsb.nceas.metacat.database.DBConnectionPool;
+import edu.ucsb.nceas.metacat.dataone.hazelcast.HazelcastService;
 import edu.ucsb.nceas.metacat.dataquery.DataQuery;
 import edu.ucsb.nceas.metacat.dataquery.MetacatDatabaseConnectionPoolFactory;
 import edu.ucsb.nceas.metacat.event.MetacatDocumentEvent;
@@ -1857,7 +1858,7 @@
                   // handle inserts
                   try {
                     sysMeta = createSystemMetadata(newdocid, user, groups);
-                    IdentifierManager.getInstance().createSystemMetadata(sysMeta);
+                    HazelcastService.getInstance().getSystemMetadataMap().put(sysMeta.getIdentifier(), sysMeta);
                     
                   } catch ( McdbDocNotFoundException dnfe ) {
                     logMetacat.debug(
@@ -3001,11 +3002,7 @@
                             SystemMetadata sm = createSystemMetadata(docid, username, groupnames);
 							
 					        // manage it in the store
-					        if (IdentifierManager.getInstance().identifierExists(docid)) {
-						        IdentifierManager.getInstance().createSystemMetadata(sm);
-					        } else {
-						        IdentifierManager.getInstance().updateSystemMetadata(sm);
-					        }
+                            HazelcastService.getInstance().getSystemMetadataMap().put(sm.getIdentifier(), sm);
                  
 					        
                         } catch (Exception ee) {
Index: src/edu/ucsb/nceas/metacat/dataone/CNodeService.java
===================================================================
--- src/edu/ucsb/nceas/metacat/dataone/CNodeService.java	(revision 6446)
+++ src/edu/ucsb/nceas/metacat/dataone/CNodeService.java	(revision 6447)
@@ -537,10 +537,7 @@
         logMetacat.debug("Starting to insert SystemMetadata...");
         sysmeta.setDateSysMetadataModified(new Date());
         try {
-          IdentifierManager.getInstance().createSystemMetadata(sysmeta);
-          // force replication of this record
-          ForceReplicationSystemMetadataHandler forceReplication = 
-            new ForceReplicationSystemMetadataHandler(guid.getValue(), null);
+        	HazelcastService.getInstance().getSystemMetadataMap().put(sysmeta.getIdentifier(), sysmeta);
         } catch (Exception e) {
             throw new ServiceFailure("4862", "Error inserting system metadata: " + e.getClass() + ": " + e.getMessage());
         }
Index: src/edu/ucsb/nceas/metacat/dataone/D1NodeService.java
===================================================================
--- src/edu/ucsb/nceas/metacat/dataone/D1NodeService.java	(revision 6446)
+++ src/edu/ucsb/nceas/metacat/dataone/D1NodeService.java	(revision 6447)
@@ -76,6 +76,7 @@
 import edu.ucsb.nceas.metacat.IdentifierManager;
 import edu.ucsb.nceas.metacat.McdbDocNotFoundException;
 import edu.ucsb.nceas.metacat.MetacatHandler;
+import edu.ucsb.nceas.metacat.dataone.hazelcast.HazelcastService;
 import edu.ucsb.nceas.metacat.properties.PropertyService;
 import edu.ucsb.nceas.metacat.replication.ForceReplicationHandler;
 import edu.ucsb.nceas.metacat.util.SystemUtil;
@@ -241,11 +242,7 @@
     }
 
     // save the sysmeta
-    try {
-		IdentifierManager.getInstance().createSystemMetadata(sysmeta);
-	} catch (McdbDocNotFoundException e) {
-	    throw new ServiceFailure("1190", "Unable to save System Metadata for the object. ");
-	}
+    HazelcastService.getInstance().getSystemMetadataMap().put(sysmeta.getIdentifier(), sysmeta);
     
     // setting the resulting identifier failed
     if (localId == null ) {
@@ -946,15 +943,8 @@
         sysmeta.getDateSysMetadataModified());
 
     //insert the system metadata
-	try {
-		IdentifierManager.getInstance().createSystemMetadata(sysmeta);
-	  
-	} catch (McdbDocNotFoundException e) {
-      throw new ServiceFailure("1030", "Error inserting system metadata: " + 
-      	e.getClass() + ": " + e.getMessage());
+    HazelcastService.getInstance().getSystemMetadataMap().put(sysmeta.getIdentifier(), sysmeta);
       
-    }
-      
   }
 
   /**
Index: src/edu/ucsb/nceas/metacat/replication/ReplicationHandler.java
===================================================================
--- src/edu/ucsb/nceas/metacat/replication/ReplicationHandler.java	(revision 6446)
+++ src/edu/ucsb/nceas/metacat/replication/ReplicationHandler.java	(revision 6447)
@@ -39,6 +39,7 @@
 import edu.ucsb.nceas.metacat.database.DBConnection;
 import edu.ucsb.nceas.metacat.database.DBConnectionPool;
 import edu.ucsb.nceas.metacat.database.DatabaseService;
+import edu.ucsb.nceas.metacat.dataone.hazelcast.HazelcastService;
 import edu.ucsb.nceas.metacat.properties.PropertyService;
 import edu.ucsb.nceas.metacat.shared.HandlerException;
 import edu.ucsb.nceas.metacat.util.MetacatUtil;
@@ -445,16 +446,7 @@
     		  TypeMarshaller.unmarshalTypeFromStream(
     				  SystemMetadata.class, 
     				  new ByteArrayInputStream(systemMetadataXML.getBytes("UTF-8")));
-    	  String guid = sysMeta.getIdentifier().getValue();
-    	  if (!IdentifierManager.getInstance().identifierExists(guid)) {
-    		  logReplication.debug("Creating system metadata and guid/docid mapping for docid " + docinfoHash.get("docid") + " and guid: " + guid);
-    		  IdentifierManager.getInstance().createMapping(guid, docinfoHash.get("docid"));
-    		  IdentifierManager.getInstance().createSystemMetadata(sysMeta);
-    	  } else {
-    		  logReplication.debug("Updating guid/docid mapping for docid " + docinfoHash.get("docid") + " and guid: " + guid);
-    		  IdentifierManager.getInstance().updateMapping(guid, docinfoHash.get("docid"));
-    	  }
-          IdentifierManager.getInstance().updateSystemMetadata(sysMeta);
+    	  HazelcastService.getInstance().getSystemMetadataMap().put(sysMeta.getIdentifier(), sysMeta);
       }
       
       logReplication.info("ReplicationHandler.handleSingleXMLDocument - Successfully replicated doc " + accNumber);
@@ -604,16 +596,7 @@
       		TypeMarshaller.unmarshalTypeFromStream(
       				  SystemMetadata.class, 
       				  new ByteArrayInputStream(systemMetadataXML.getBytes("UTF-8")));
-      	  String guid = sysMeta.getIdentifier().getValue();
-      	  if (!IdentifierManager.getInstance().identifierExists(guid)) {
-      		  logReplication.debug("Creating system metadata and guid/docid mapping for docid " + docinfoHash.get("docid") + " and guid: " + guid);
-      		  IdentifierManager.getInstance().createMapping(guid, docinfoHash.get("docid"));
-      		  IdentifierManager.getInstance().createSystemMetadata(sysMeta);
-      	  } else {
-      		  logReplication.debug("Updating guid/docid mapping for docid " + docinfoHash.get("docid") + " and guid: " + guid);
-      		  IdentifierManager.getInstance().updateMapping(guid, docinfoHash.get("docid"));
-      	  }
-            IdentifierManager.getInstance().updateSystemMetadata(sysMeta);
+      	  HazelcastService.getInstance().getSystemMetadataMap().put(sysMeta.getIdentifier(), sysMeta);
         }
         
         logReplication.info("ReplicationHandler.handleSingleDataFile - Successfully to write datafile " + accNumber);
@@ -840,12 +823,7 @@
 				SystemMetadata sysMeta = TypeMarshaller.unmarshalTypeFromStream(SystemMetadata.class,
 								new ByteArrayInputStream(systemMetadataXML
 										.getBytes("UTF-8")));
-				// String guid = sysMeta.getIdentifier().getValue();
-				if (!IdentifierManager.getInstance().identifierExists(guid)) {
-					logReplication.debug("Creating system metadata for guid: " + guid);
-					IdentifierManager.getInstance().createSystemMetadata(sysMeta);
-				}
-				IdentifierManager.getInstance().updateSystemMetadata(sysMeta);
+				HazelcastService.getInstance().getSystemMetadataMap().put(sysMeta.getIdentifier(), sysMeta);
 			}
 
 			logReplication.info("ReplicationHandler.handleSystemMetadata - Successfully replicated system metadata for guid: "
Index: src/edu/ucsb/nceas/metacat/replication/ReplicationService.java
===================================================================
--- src/edu/ucsb/nceas/metacat/replication/ReplicationService.java	(revision 6446)
+++ src/edu/ucsb/nceas/metacat/replication/ReplicationService.java	(revision 6447)
@@ -78,6 +78,7 @@
 import edu.ucsb.nceas.metacat.database.DBConnection;
 import edu.ucsb.nceas.metacat.database.DBConnectionPool;
 import edu.ucsb.nceas.metacat.database.DatabaseService;
+import edu.ucsb.nceas.metacat.dataone.hazelcast.HazelcastService;
 import edu.ucsb.nceas.metacat.properties.PropertyService;
 import edu.ucsb.nceas.metacat.shared.BaseService;
 import edu.ucsb.nceas.metacat.shared.HandlerException;
@@ -589,21 +590,7 @@
 					TypeMarshaller.unmarshalTypeFromStream(
 							SystemMetadata.class,
 							new ByteArrayInputStream(systemMetadataXML.getBytes("UTF-8")));
-				String guid = sysMeta.getIdentifier().getValue();
-				if (!IdentifierManager.getInstance().identifierExists(guid)) {
-					logReplication.debug("Creating system metadata and guid/docid mapping for docid "
-									+ docinfoHash.get("docid")
-									+ " and guid: "
-									+ guid);
-					IdentifierManager.getInstance().createMapping(guid, docinfoHash.get("docid"));
-					IdentifierManager.getInstance().createSystemMetadata(sysMeta);
-				} else {
-					logReplication.debug("Updating guid/docid mapping for docid "
-									+ docinfoHash.get("docid") + " and guid: "
-									+ guid);
-					IdentifierManager.getInstance().updateMapping(guid, docinfoHash.get("docid"));
-				}
-				IdentifierManager.getInstance().updateSystemMetadata(sysMeta);
+				HazelcastService.getInstance().getSystemMetadataMap().put(sysMeta.getIdentifier(), sysMeta);
 			}
       
         	// replicate doc contents
@@ -870,16 +857,7 @@
 		      		TypeMarshaller.unmarshalTypeFromStream(
 		      				  SystemMetadata.class, 
 		      				  new ByteArrayInputStream(systemMetadataXML.getBytes("UTF-8")));
-		      	  String guid = sysMeta.getIdentifier().getValue();
-		      	  if (!IdentifierManager.getInstance().identifierExists(guid)) {
-		      		  logReplication.debug("Creating system metadata and guid/docid mapping for docid " + docinfoHash.get("docid") + " and guid: " + guid);
-		      		  IdentifierManager.getInstance().createMapping(guid, docinfoHash.get("docid"));
-		      		  IdentifierManager.getInstance().createSystemMetadata(sysMeta);
-		      	  } else {
-		      		  logReplication.debug("Updating guid/docid mapping for docid " + docinfoHash.get("docid") + " and guid: " + guid);
-		      		  IdentifierManager.getInstance().updateMapping(guid, docinfoHash.get("docid"));
-		      	  }
-		      	  IdentifierManager.getInstance().updateSystemMetadata(sysMeta);
+		      	  HazelcastService.getInstance().getSystemMetadataMap().put(sysMeta.getIdentifier(), sysMeta);
 		        }
 
 				if (writeException != null) {
@@ -1081,11 +1059,7 @@
 					TypeMarshaller.unmarshalTypeFromStream(
 							SystemMetadata.class,
 							new ByteArrayInputStream(systemMetadataXML.getBytes("UTF-8")));
-				if (!IdentifierManager.getInstance().identifierExists(guid)) {
-					logReplication.debug("Creating system metadata for guid: " + guid);
-					IdentifierManager.getInstance().createSystemMetadata(sysMeta);
-				}
-				IdentifierManager.getInstance().updateSystemMetadata(sysMeta);
+				HazelcastService.getInstance().getSystemMetadataMap().put(sysMeta.getIdentifier(), sysMeta);
 			}
       
 			logReplication.info("ReplicationService.handleForceReplicateSystemMetadataRequest - processed guid: " + guid);
