diff --git a/modules/node/node.module b/modules/node/node.module
index 378193d2b959eef464d86d9d767297848fbf8f55..d0cde298f5740d1d9a677872955581e91744eeb9 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1182,14 +1182,14 @@ function node_save($node) {
     $function = "field_attach_$op";
     $function('node', $node);
 
-    module_invoke_all('node_' . $op, $node);
-    module_invoke_all('entity_' . $op, $node, 'node');
-
     // Update the node access table for this node. There's no need to delete
     // existing records if the node is new.
     $delete = $op == 'update';
     node_access_acquire_grants($node, $delete);
 
+    module_invoke_all('node_' . $op, $node);
+    module_invoke_all('entity_' . $op, $node, 'node');
+
     // Clear internal properties.
     unset($node->is_new);
     unset($node->original);
