diff --git a/casetracker.module b/casetracker.module
index 8795b33..e926746 100644
--- a/casetracker.module
+++ b/casetracker.module
@@ -159,7 +159,7 @@ function casetracker_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
         $record->nid = $node->nid;
         $record->vid = $node->vid;
 
-        $primary = $node->revision ? array('nid') : array('nid', 'vid');
+        $primary = $node->revision ? array() : array('nid', 'vid');
         drupal_write_record('casetracker_case', $record, $primary);
         break;
 
@@ -1072,3 +1072,43 @@ function casetracker_token_list($type = 'all') {
   module_load_include('inc', 'casetracker', 'casetracker.token');
   return _casetracker_token_list($type);
 }
+
+/**
+ * Implementation of hook_diff().
+ */
+function casetracker_diff($old_node, $new_node) {
+  $result = array();
+
+  if ($new_node->type !== 'casetracker_basic_case')
+    return $result;
+
+  if (!empty($old_node->casetracker->case_status_id))
+    $result['case_status'] = array(
+      '#name' => 'Status',
+      '#old' => array( casetracker_case_state_load( $old_node->casetracker->case_status_id, 'status') ),
+      '#new' => array( casetracker_case_state_load( $new_node->casetracker->case_status_id, 'status') ),
+    );
+
+  if (!empty($old_node->casetracker->case_priority_id))
+    $result['case_priority'] = array(
+      '#name' => 'Priority',
+      '#old' => array( casetracker_case_state_load( $old_node->casetracker->case_priority_id, 'priority') ),
+      '#new' => array( casetracker_case_state_load( $new_node->casetracker->case_priority_id, 'priority') ),
+    );
+
+  if (!empty($old_node->casetracker->case_type_id))
+    $result['case_type'] = array(
+      '#name' => 'Type',
+      '#old' => array( casetracker_case_state_load( $old_node->casetracker->case_type_id, 'type') ),
+      '#new' => array( casetracker_case_state_load( $new_node->casetracker->case_type_id, 'type') ),
+    );
+
+  if (!empty($old_node->casetracker->pid))
+    $result['case_pid'] = array(
+      '#name' => 'Project',
+      '#old' => array( node_load($old_node->casetracker->pid)->title ),
+      '#new' => array( node_load($new_node->casetracker->pid)->title ),
+    );
+
+  return $result;
+}
