Index: src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateValidator.java
===================================================================
--- src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateValidator.java	(revision 756369)
+++ src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateValidator.java	(working copy)
@@ -546,13 +546,12 @@
      */
     private void checkCollision(NodeState parentState, Name propertyName) throws ItemExistsException, RepositoryException {
         NodeEntry parentEntry = (NodeEntry) parentState.getHierarchyEntry();
-        // check for name collisions with existing child nodes
-        if (parentEntry.hasNodeEntry(propertyName)) {
-            String msg = "Child node with name '" + propertyName + "' already exists.";
-            log.debug(msg);
-            throw new RepositoryException(msg);
-        }
-        // check for name collisions with existing properties
+        // NOTE: check for name collisions with existing child node has been
+        // removed as with JSR 283 having same-named node and property can be
+        // allowed. thus delegate the correspoding validation to the underlying
+        // SPI implementation.
+
+        // check for name collisions with an existing property
         PropertyEntry pe = parentEntry.getPropertyEntry(propertyName);
         if (pe != null) {
             try {
@@ -575,13 +574,13 @@
      * @throws NoSuchNodeTypeException
      */
     private void checkCollision(NodeState parentState, Name nodeName, Name nodeTypeName) throws RepositoryException, ConstraintViolationException, NoSuchNodeTypeException {
-        if (parentState.hasPropertyName(nodeName)) {
-            // there's already a property with that name
-            throw new ItemExistsException("cannot add child node '"
-                + nodeName.getLocalName() + "' to " + safeGetJCRPath(parentState)
-                + ": colliding with same-named existing property");
+        // NOTE: check for name collisions with existing child property has been
+        // removed as with JSR 283 having same-named node and property may be
+        // allowed. thus delegate the correspoding validation to the underlying
+        // SPI implementation.
 
-        } else if (parentState.hasChildNodeEntry(nodeName, Path.INDEX_DEFAULT)) {
+        // check for conflict with existing same-name sibling node.
+        if (parentState.hasChildNodeEntry(nodeName, Path.INDEX_DEFAULT)) {
             // retrieve the existing node state that ev. conflicts with the new one.
             try {
                 NodeState conflictingState = parentState.getChildNodeState(nodeName, Path.INDEX_DEFAULT);
@@ -591,9 +590,9 @@
                 // check same-name sibling setting of both target and existing node
                 if (!(conflictDef.allowsSameNameSiblings() && newDef.allowsSameNameSiblings())) {
                     throw new ItemExistsException("Cannot add child node '"
-                        + nodeName.getLocalName() + "' to "
-                        + safeGetJCRPath(parentState)
-                        + ": colliding with same-named existing node.");
+                            + nodeName.getLocalName() + "' to "
+                            + safeGetJCRPath(parentState)
+                            + ": colliding with same-named existing node.");
                 }
             } catch (ItemNotFoundException e) {
                 // ignore: conflicting doesn't exist any more
Index: src/test/java/org/apache/jackrabbit/jcr2spi/MoveTest.java
===================================================================
--- src/test/java/org/apache/jackrabbit/jcr2spi/MoveTest.java	(revision 756369)
+++ src/test/java/org/apache/jackrabbit/jcr2spi/MoveTest.java	(working copy)
@@ -27,6 +27,7 @@
 import javax.jcr.Item;
 import javax.jcr.Property;
 import javax.jcr.ItemExistsException;
+import javax.jcr.Repository;
 
 /**
  * <code>MoveTest</code>...
@@ -245,12 +246,23 @@
             throw new NotExecutableException("Cannot create property with name '" +nodeName2+ "' and value 'anyString' at move destination.");
         }
 
-        try {
-            // move the node
-            doMove(moveNode.getPath(), destProperty.getPath());
-            fail("Moving a node to a location where a property exists must throw ItemExistsException");
-        } catch (ItemExistsException e) {
-            // ok, works as expected
+        if ("1.0".equals(helper.getRepository().getDescriptor(Repository.SPEC_VERSION_DESC))) {
+            try {
+                // move the node
+                doMove(moveNode.getPath(), destProperty.getPath());
+                fail("Moving a node to a location where a property exists must throw ItemExistsException");
+            } catch (ItemExistsException e) {
+                // ok, works as expected
+            }
+        } else {
+            // TODO: use appropriate descriptor to determine the expected behaviour
+            try {
+                // move the node
+                doMove(moveNode.getPath(), destProperty.getPath());
+                // ok, same name prop/node supported
+            } catch (ItemExistsException e) {
+                // ok, same name prop/node NOT supported
+            }
         }
     }
 }
\ No newline at end of file
Index: src/test/java/org/apache/jackrabbit/jcr2spi/TestAll.java
===================================================================
--- src/test/java/org/apache/jackrabbit/jcr2spi/TestAll.java	(revision 756369)
+++ src/test/java/org/apache/jackrabbit/jcr2spi/TestAll.java	(working copy)
@@ -56,7 +56,7 @@
         suite.addTestSuite(MoveTreeTest.class);
         suite.addTestSuite(MoveNewTreeTest.class);
         suite.addTestSuite(MoveMultipleTest.class);
-        //suite.addTestSuite(WorkspaceMoveTest.class);  // see JCR-1276
+        suite.addTestSuite(WorkspaceMoveTest.class);
         suite.addTestSuite(RevertMoveTest.class);
         suite.addTestSuite(MoveToNewTest.class);
         suite.addTestSuite(MoveCombinedTest.class);
Index: src/test/java/org/apache/jackrabbit/jcr2spi/WorkspaceMoveTest.java
===================================================================
--- src/test/java/org/apache/jackrabbit/jcr2spi/WorkspaceMoveTest.java	(revision 756369)
+++ src/test/java/org/apache/jackrabbit/jcr2spi/WorkspaceMoveTest.java	(working copy)
@@ -21,6 +21,7 @@
 import javax.jcr.RepositoryException;
 import javax.jcr.Property;
 import javax.jcr.ItemExistsException;
+import javax.jcr.Repository;
 
 /**
  * <code>WorkspaceMoveTest</code>...
@@ -35,12 +36,11 @@
         return false;
     }
 
-
     /**
      * Tries to move a node using to a location where a property already exists
      * with same name.
-     * <br/> <br/>
-     * This should throw an <code>{@link javax.jcr.ItemExistsException}</code>.
+     * <br/>
+     * As of JCR 2.0 this may be allowed.
      */
     public void testMovePropertyExistsException() throws RepositoryException, NotExecutableException {
         // try to create a property with the name of the node to be moved
@@ -53,13 +53,25 @@
             throw new NotExecutableException("Cannot create property with name '" +nodeName2+ "' and value 'anyString' at move destination.");
         }
 
-        try {
-            // move the node
-            doMove(moveNode.getPath(), destProperty.getPath());
-            fail("Moving a node to a location where a property exists must throw ItemExistsException");
-        } catch (ItemExistsException e) {
-            // ok, works as expected
+        if ("1.0".equals(helper.getRepository().getDescriptor(Repository.SPEC_VERSION_DESC))) {
+            try {
+                // move the node
+                doMove(moveNode.getPath(), destProperty.getPath());
+                fail("Moving a node to a location where a property exists must throw ItemExistsException");
+            } catch (ItemExistsException e) {
+                // ok, works as expected
+            }
+        } else {
+            // TODO: use appropriate descriptor to determine the expected behaviour
+            try {
+                // move the node
+                doMove(moveNode.getPath(), destProperty.getPath());
+                // ok. same named prop/node are suppored
+            } catch (ItemExistsException e) {
+                // ok, same named prop/node are NOT suppored
+            }
         }
+
     }
 
     public void testMoveTransientPropertyExists() throws RepositoryException, NotExecutableException {
@@ -74,12 +86,24 @@
 
         // workspace-move the node (must succeed)
         doMove(moveNode.getPath(), destProperty.getPath());
-        try {
-            // saving transient new property must fail
-            destParentNode.save();
-            fail("Saving new transient property must fail");
-        } catch (RepositoryException e) {
-            // ok.
+
+        if ("1.0".equals(helper.getRepository().getDescriptor(Repository.SPEC_VERSION_DESC))) {
+            try {
+                // saving transient new property must fail
+                destParentNode.save();
+                fail("Saving new transient property must fail");
+            } catch (RepositoryException e) {
+                // ok.
+            }
+        } else {
+            // TODO: use appropriate descriptor to determine the expected behaviour
+            try {
+                // saving transient new property must fail
+                destParentNode.save();
+                // ok. same named prop/node are suppored
+            } catch (RepositoryException e) {
+                // ok, same named prop/node are NOT suppored
+            }
         }
     }
 }
\ No newline at end of file
