Index: kernel/classes/ezcontentclassattribute.php
===================================================================
--- kernel/classes/ezcontentclassattribute.php	(revision 17381)
+++ kernel/classes/ezcontentclassattribute.php	(working copy)
@@ -230,6 +230,10 @@
     function store()
     {
         $dataType = $this->dataType();
+        if ( !$dataType )
+        {
+            return false;
+        }
         $dataType->preStoreClassAttribute( $this, $this->attribute( 'version' ) );
         $stored = eZPersistentObject::store();
 
Index: kernel/class/edit.php
===================================================================
--- kernel/class/edit.php	(revision 17381)
+++ kernel/class/edit.php	(working copy)
@@ -341,8 +341,10 @@
     $identifier = $trans->transformByGroup( $identifier, 'identifier' );
 
     $attribute->setAttribute( 'identifier', $identifier );
-    $dataType = $attribute->dataType();
-    $dataType->initializeClassAttribute( $attribute );
+    if ( $dataType = $attribute->dataType() )
+    {
+        $dataType->initializeClassAttribute( $attribute );
+    }
 }
 
 // Fixed class identifier to only contain a-z0-9_
@@ -403,13 +405,28 @@
 }
 
 // Fetch HTTP input
+$datatypeValidation = array();
 if ( $contentClassHasInput )
 {
     foreach( array_keys( $attributes ) as $key )
     {
         $attribute =& $attributes[$key];
-        $dataType = $attribute->dataType();
-        $dataType->fetchClassAttributeHTTPInput( $http, 'ContentClass', $attribute );
+        if ( $dataType = $attribute->dataType() )
+        {
+            $dataType->fetchClassAttributeHTTPInput( $http, 'ContentClass', $attribute );
+        }
+        else
+        {
+            $datatypeValidation['processed'] = 1;
+            $datatypeValidation['attributes'][] =
+                array( 'reason' => array( 'text' => 'Could not load datatype: ' . $attribute->attribute( 'data_type_string' ) . "\n" .
+                                          'Editing this content class may cause data corruption in your system.' . "\n" .
+                                          'Press "Cancel" safly exit this operation.' . "\n" .
+                                          'Please contact your eZ publish administrator to solve this problem.' . "\n" ),
+                       'item' => $attribute->attribute( 'data_type_string' ),
+                       'identifier' => $attribute->attribute( 'data_type_string' ),
+                       'id' => $key );
+        }
     }
 }
 
@@ -623,6 +640,8 @@
 // Fetch updated attributes
 $attributes = $class->fetchAttributes();
 
+$validation = array_merge( $validation, $datatypeValidation );
+
 // Template handling
 include_once( 'kernel/common/template.php' );
 $tpl =& templateInit();
