Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java	(revision c1497b41728183f1a240754b900057c33ecad59e)
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java	(revision )
@@ -57,6 +57,8 @@
     private static final Logger log = LoggerFactory.getLogger(ImportHandler.class);
 
     private final Root root;
+    private final Root initialRoot;
+
     private final SessionContext sessionContext;
     private final Importer importer;
     private final NamespaceHelper helper;
@@ -72,9 +74,10 @@
         this.isWorkspaceImport = isWorkspaceImport;
 
         SessionDelegate sd = sessionContext.getSessionDelegate();
+        initialRoot = sd.getContentSession().getLatestRoot();
         root = (isWorkspaceImport) ? sd.getContentSession().getLatestRoot() : sd.getRoot();
         helper = new NamespaceHelper(sessionContext.getSession());
-        importer = new ImporterImpl(absPath, sessionContext, root, uuidBehavior, isWorkspaceImport);
+        importer = new ImporterImpl(absPath, sessionContext, root, initialRoot, uuidBehavior, isWorkspaceImport);
     }
 
     //---------------------------------------------------------< ErrorHandler >
Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java	(revision c1497b41728183f1a240754b900057c33ecad59e)
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java	(revision )
@@ -19,8 +19,10 @@
 import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.NODE_TYPES_PATH;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 import java.util.Stack;
 import java.util.UUID;
 
@@ -73,9 +75,11 @@
 
     private final String userID;
     private final AccessManager accessManager;
-    private final IdentifierManager idManager;
+    private final IdentifierManager baseStateIdManager;
+    private final IdentifierManager currentStateIdManager;
     private final EffectiveNodeTypeProvider effectiveNodeTypeProvider;
     private final DefinitionProvider definitionProvider;
+    private final Set<String> uuids = new HashSet<String>();
 
     private final Stack<Tree> parents;
 
@@ -107,6 +111,7 @@
     public ImporterImpl(String absPath,
                         SessionContext sessionContext,
                         Root root,
+                        Root initialRoot,
                         int uuidBehavior,
                         boolean isWorkspaceImport) throws RepositoryException {
         if (!PathUtils.isAbsolute(absPath)) {
@@ -139,7 +144,8 @@
         }
         ntTypesRoot = root.getTree(NODE_TYPES_PATH);
         accessManager = sessionContext.getAccessManager();
-        idManager = new IdentifierManager(root);
+        baseStateIdManager = new IdentifierManager(initialRoot);
+        currentStateIdManager = new IdentifierManager(root);
         effectiveNodeTypeProvider = sessionContext.getWorkspace().getNodeTypeManager();
         definitionProvider = sessionContext.getWorkspace().getNodeTypeManager();
         // TODO: end
@@ -171,6 +177,11 @@
         for (String mixin : nInfo.getMixinTypeNames()) {
             TreeUtil.addMixin(child, mixin, ntTypesRoot, userID);
         }
+
+        if(child.hasProperty(JcrConstants.JCR_UUID)){
+            String newUUID = child.getProperty(JcrConstants.JCR_UUID).getValue(Type.STRING);
+            uuids.add(newUUID);
+        }
         return child;
     }
 
@@ -192,14 +203,10 @@
     }
 
     private Tree resolveUUIDConflict(Tree parent,
+                                     Tree conflicting,
                                      String conflictingId,
                                      NodeInfo nodeInfo) throws RepositoryException {
         Tree tree;
-        Tree conflicting = idManager.getTree(conflictingId);
-        if (conflicting != null && !conflicting.exists()) {
-            conflicting = null;
-        }
-
         if (uuidBehavior == ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW) {
             // create new with new uuid
             tree = createTree(parent, nodeInfo, UUID.randomUUID().toString());
@@ -367,10 +374,16 @@
                 // no potential uuid conflict, always add new node
                 tree = createTree(parent, nodeInfo, id);
             } else {
-                Tree conflicting = idManager.getTree(id);
+                Tree conflicting = baseStateIdManager.getTree(id);
+
+                //Check if id is found in newly created nodes
+                if(conflicting == null && uuids.contains(id)){
+                    conflicting = currentStateIdManager.getTree(id);
+                }
+
                 if (conflicting != null && conflicting.exists()) {
                     // resolve uuid conflict
-                    tree = resolveUUIDConflict(parent, id, nodeInfo);
+                    tree = resolveUUIDConflict(parent, conflicting, id, nodeInfo);
                     if (tree == null) {
                         // no new node has been created, so skip this node
                         parents.push(null); // push null onto stack for skipped node
