Skip to content

PATCH requests to update an existing record through a Custom Logical Unit's Integration projection consistently fail with a DB_OBJECT_MODIFIED / 'Resource already modified' error, even on a record that hasn't actually been touched by anyone else — while sending a non-existent key just creates a new record instead of updating.

Answer

Add an If-Match header to the PATCH request, set to the record's current @odata.etag value (obtained from a prior GET on that same record) — this is standard OData optimistic-concurrency behavior: without a matching If-Match value, the server can't confirm you're updating the version you actually read, and rejects the update. When copying the etag value out of the GET response, make sure to strip any escaped backslashes around the embedded quotes before using it as the header value, since those are just JSON string-escaping artifacts, not part of the actual etag.

← Browse Integrations and APIs questions