diff --git a/packages/ra-cubicweb/src/index.ts b/packages/ra-cubicweb/src/index.ts
index 7bfc6143c1b7fc5f8e99aa0cd0a0d5ba270a6a22_cGFja2FnZXMvcmEtY3ViaWN3ZWIvc3JjL2luZGV4LnRz..200e6984621f3e216d7c4535143f72e3cba6cb01_cGFja2FnZXMvcmEtY3ViaWN3ZWIvc3JjL2luZGV4LnRz 100644
--- a/packages/ra-cubicweb/src/index.ts
+++ b/packages/ra-cubicweb/src/index.ts
@@ -136,7 +136,19 @@
       return { data: [entity] };
     },
     getManyReference: (_resource, _params) => Promise.reject("Not implemented"),
-    update: (_resource, _params) => Promise.reject("Not implemented"),
+    update: async (resource, { data, id }) => {
+      // FIXME update relations
+      const attributesUpdates: string[] = [];
+      Object.entries(data).forEach(([key, value]) => {
+        if (key in schema.etypes[resource]) {
+          attributesUpdates.push(`X ${key} ${JSON.stringify(value)}`);
+        }
+      });
+      await rqlClient.queryRows(`
+        SET ${attributesUpdates.join(", ")} WHERE X is ${resource}, X eid ${id}
+      `);
+      return Promise.resolve({ data: { ...data, id } });
+    },
     updateMany: (_resource, _params) => Promise.reject("Not implemented"),
     create: (_resource, _params) => Promise.reject("Not implemented"),
     delete: (_resource, _params) => Promise.reject("Not implemented"),