Index: kernel/classes/ezcontentobject.php
===================================================================
--- kernel/classes/ezcontentobject.php	(revision 22135)
+++ kernel/classes/ezcontentobject.php	(working copy)
@@ -1134,9 +1134,9 @@
         return eZContentObjectVersion::create( $this->attribute( "id" ), $userID, 1, $initialLanguageCode );
     }
 
-    function createNewVersionIn( $languageCode, $copyFromLanguageCode = false, $copyFromVersion = false, $versionCheck = true )
+    function createNewVersionIn( $languageCode, $copyFromLanguageCode = false, $copyFromVersion = false, $versionCheck = true, $status = eZContentObjectVersion::STATUS_DRAFT )
     {
-        return $this->createNewVersion( $copyFromVersion, $versionCheck, $languageCode, $copyFromLanguageCode );
+        return $this->createNewVersion( $copyFromVersion, $versionCheck, $languageCode, $copyFromLanguageCode, $status );
     }
 
     /*!
@@ -1148,7 +1148,7 @@
      \note Transaction unsafe. If you call several transaction unsafe methods you must enclose
      the calls within a db transaction; thus within db->begin and db->commit.
     */
-    function createNewVersion( $copyFromVersion = false, $versionCheck = true, $languageCode = false, $copyFromLanguageCode = false )
+    function createNewVersion( $copyFromVersion = false, $versionCheck = true, $languageCode = false, $copyFromLanguageCode = false, $status = eZContentObjectVersion::STATUS_DRAFT )
     {
         $db = eZDB::instance();
         $db->begin();
@@ -1220,7 +1220,7 @@
             }
         }
 
-        $copiedVersion = $this->copyVersion( $this, $version, $nextVersionNumber, false, eZContentObjectVersion::STATUS_DRAFT, $languageCode, $copyFromLanguageCode );
+        $copiedVersion = $this->copyVersion( $this, $version, $nextVersionNumber, false, $status, $languageCode, $copyFromLanguageCode );
 
         // We need to make sure the copied version contains node-assignment for the existing nodes.
         // This is required for BC since scripts might traverse the node-assignments and mark
Index: kernel/content/edit.php
===================================================================
--- kernel/content/edit.php	(revision 22135)
+++ kernel/content/edit.php	(working copy)
@@ -157,12 +157,7 @@
     $versionCount = $obj->getVersionCount();
     if ( $versionCount < $versionlimit )
     {
-        $db = eZDB::instance();
-        $db->begin();
-        $version = $obj->createNewVersionIn( $EditLanguage, $FromLanguage );
-        $version->setAttribute( 'status', eZContentObjectVersion::STATUS_INTERNAL_DRAFT );
-        $version->store();
-        $db->commit();
+        $version = $obj->createNewVersionIn( $EditLanguage, $FromLanguage, false, true, eZContentObjectVersion::STATUS_INTERNAL_DRAFT );
         if ( !$http->hasPostVariable( 'DoNotEditAfterNewDraft' ) )
         {
             return $Module->redirectToView( 'edit', array( $ObjectID, $version->attribute( 'version' ), $EditLanguage ) );
@@ -193,9 +188,7 @@
             $db = eZDB::instance();
             $db->begin();
             $removeVersion->removeThis();
-            $version = $obj->createNewVersionIn( $EditLanguage );
-            $version->setAttribute( 'status', eZContentObjectVersion::STATUS_INTERNAL_DRAFT );
-            $version->store();
+            $version = $obj->createNewVersionIn( $EditLanguage, false, false, true, eZContentObjectVersion::STATUS_INTERNAL_DRAFT );
             $db->commit();
 
             if( !$http->hasPostVariable( 'DoNotEditAfterNewDraft' ) )
@@ -268,10 +261,8 @@
     }
     $isAccessChecked = true;
 
-    $version = $obj->createNewVersionIn( $selectedEditLanguage, $selectedFromLanguage );
-    $version->setAttribute( 'status', eZContentObjectVersion::STATUS_INTERNAL_DRAFT );
+    $version = $obj->createNewVersionIn( $selectedEditLanguage, $selectedFromLanguage, false, true, eZContentObjectVersion::STATUS_INTERNAL_DRAFT );
 
-    $version->store();
     return $Module->redirectToView( 'edit', array( $ObjectID, $version->attribute( 'version' ), $selectedEditLanguage, $selectedFromLanguage ) );
 }
 
@@ -381,9 +372,7 @@
         $isAccessChecked = true;
 
         $obj->cleanupInternalDrafts();
-        $version = $obj->createNewVersionIn( $EditLanguage );
-        $version->setAttribute( 'status', eZContentObjectVersion::STATUS_INTERNAL_DRAFT );
-        $version->store();
+        $version = $obj->createNewVersionIn( $EditLanguage, false, false, true, eZContentObjectVersion::STATUS_INTERNAL_DRAFT );
         return $Module->redirectToView( "edit", array( $ObjectID, $version->attribute( "version" ), $EditLanguage ) );
     }
     else
@@ -472,9 +461,7 @@
             }
             $isAccessChecked = true;
 
-            $version = $obj->createNewVersionIn( $EditLanguage );
-            $version->setAttribute( 'status', eZContentObjectVersion::STATUS_INTERNAL_DRAFT );
-            $version->store();
+            $version = $obj->createNewVersionIn( $EditLanguage, false, false, true, eZContentObjectVersion::STATUS_INTERNAL_DRAFT );
             return $Module->redirectToView( "edit", array( $ObjectID, $version->attribute( "version" ), $EditLanguage ) );
         }
     }
