diff --git oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java
index 3968713..4d198a8 100644
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/NodeImpl.java
@@ -295,7 +295,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
 
                 NodeDelegate added = parent.addChild(oakName, oakTypeName);
                 if (added == null) {
-                    throw new ItemExistsException();
+                    throw new ItemExistsException(getNodeDesc() + "Adding node with name " + oakName);
                 }
                 return createNode(added, sessionContext);
             }
@@ -743,7 +743,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
                 if (isNodeType(NodeType.MIX_REFERENCEABLE)) {
                     return getIdentifier();
                 }
-                throw new UnsupportedRepositoryOperationException("Node is not referenceable.");
+                throw new UnsupportedRepositoryOperationException(getNodeDesc() + "Node is not referenceable.");
             }
         });
     }
@@ -937,7 +937,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
             public void checkPreconditions() throws RepositoryException {
                 super.checkPreconditions();
                 if (!isCheckedOut()) {
-                    throw new VersionException("Cannot set primary type. Node is checked in.");
+                    throw new VersionException(getNodeDesc() + "Cannot set primary type. Node is checked in.");
                 }
             }
 
@@ -956,7 +956,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
             public void checkPreconditions() throws RepositoryException {
                 super.checkPreconditions();
                 if (!isCheckedOut()) {
-                    throw new VersionException(
+                    throw new VersionException(getNodeDesc() +
                             "Cannot add mixin type. Node is checked in.");
                 }
             }
@@ -975,7 +975,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
             public void checkPreconditions() throws RepositoryException {
                 super.checkPreconditions();
                 if (!isCheckedOut()) {
-                    throw new VersionException(
+                    throw new VersionException(getNodeDesc() +
                             "Cannot remove mixin type. Node is checked in.");
                 }
 
@@ -1042,7 +1042,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
                 if (workspaceName.equals(sessionDelegate.getWorkspaceName())) {
                     return item.getPath();
                 } else {
-                    throw new UnsupportedRepositoryOperationException("OAK-118: Node.getCorrespondingNodePath");
+                    throw new UnsupportedRepositoryOperationException(getNodeDesc() + "OAK-118: Node.getCorrespondingNodePath");
                 }
             }
         }));
@@ -1060,11 +1060,11 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
                 if (sessionDelegate.hasPendingChanges()) {
                     String msg = "Unable to perform operation. Session has pending changes.";
                     LOG.debug(msg);
-                    throw new InvalidItemStateException(msg);
+                    throw new InvalidItemStateException(getNodeDesc() + msg);
                 }
 
                 if (!srcWorkspace.equals(sessionDelegate.getWorkspaceName())) {
-                    throw new UnsupportedRepositoryOperationException("OAK-118: Node.update");
+                    throw new UnsupportedRepositoryOperationException(getNodeDesc() + "OAK-118: Node.update");
                 }
             }
         });
@@ -1132,7 +1132,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
     @Override
     public void restore(String versionName, boolean removeExisting) throws RepositoryException {
         if (!isNodeType(NodeType.MIX_VERSIONABLE)) {
-            throw new UnsupportedRepositoryOperationException("Node is not mix:versionable");
+            throw new UnsupportedRepositoryOperationException(getNodeDesc() + "Node is not mix:versionable");
         }
         getVersionManager().restore(getPath(), versionName, removeExisting);
     }
@@ -1143,13 +1143,13 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
     @Override
     public void restore(Version version, boolean removeExisting) throws RepositoryException {
         if (!isNodeType(NodeType.MIX_VERSIONABLE)) {
-            throw new UnsupportedRepositoryOperationException("Node is not mix:versionable");
+            throw new UnsupportedRepositoryOperationException(getNodeDesc() + "Node is not mix:versionable");
         }
         String id = version.getContainingHistory().getVersionableIdentifier();
         if (getIdentifier().equals(id)) {
             getVersionManager().restore(version, removeExisting);
         } else {
-            throw new VersionException("Version does not belong to the " +
+            throw new VersionException(getNodeDesc() + "Version does not belong to the " +
                     "VersionHistory of this node.");
         }
     }
@@ -1343,7 +1343,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
         // TODO: figure out the right place for this check
         NodeType nt = getNodeTypeManager().getNodeType(nodeTypeName); // throws on not found
         if (nt.isAbstract() || nt.isMixin()) {
-            throw new ConstraintViolationException();
+            throw new ConstraintViolationException(getNodeDesc());
         }
         // TODO: END
 
@@ -1364,7 +1364,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
             public void checkPreconditions() throws RepositoryException {
                 super.checkPreconditions();
                 if (!isCheckedOut()) {
-                    throw new VersionException(
+                    throw new VersionException(getNodeDesc() +
                             "Cannot set property. Node is checked in.");
                 }
             }
@@ -1400,7 +1400,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
             public void checkPreconditions() throws RepositoryException {
                 super.checkPreconditions();
                 if (!isCheckedOut()) {
-                    throw new VersionException(
+                    throw new VersionException(getNodeDesc() +
                             "Cannot set property. Node is checked in.");
                 }
             }
@@ -1444,7 +1444,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
             public void checkPreconditions() throws RepositoryException {
                 super.checkPreconditions();
                 if (!isCheckedOut()) {
-                    throw new VersionException(
+                    throw new VersionException(getNodeDesc() +
                             "Cannot remove property. Node is checked in.");
                 }
             }
@@ -1570,7 +1570,7 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
             public void checkPreconditions() throws RepositoryException {
                 super.checkPreconditions();
                 if (!isCheckedOut()) {
-                    throw new VersionException("Cannot set mixin types. Node is checked in.");
+                    throw new VersionException(getNodeDesc() + "Cannot set mixin types. Node is checked in.");
                 }
 
                 // check for NODE_TYPE_MANAGEMENT permission here as we cannot
@@ -1589,6 +1589,14 @@ public class NodeImpl<T extends NodeDelegate> extends ItemImpl<T> implements Nod
         });
     }
 
+    /**
+     * Provide current node details. Should be invoked from within
+     * the SessionDelegate#perform
+     */
+    private String getNodeDesc(){
+        return "[" + dlg.getPath() + "] ";
+    }
+
     private static class PropertyIteratorDelegate {
         private final NodeDelegate node;
         private final Predicate<PropertyDelegate> predicate;
