I'm writing some client-side customisations for a model driven app and I need to update an entry in an N:N relationship. I have been following the documentation here. I can read from the relationship table, but trying to update an entry or create a new entry is failing.
The N:N relationship is between a custom entity new_lastask and the built-in systemuser entity. The name generated for the N:N relationship is new_new_lastask_systemuser. I have managed to create and update other records, and I understand that you need to use the Schema name with the exact casing, not the name of the field and also the @odata.bind syntax when updating a lookup field, but I can't figure out what the name of the field should be.
The example code below tries to find a N:N record with a given user and switch it for another user, I have given an example with the updateRecord method, but I have tried with createRecord too and I get the same error.
// taskId is the Guid of the custom task entity, and userId is the guid of the user
var query = "?$filter=new_lastaskid eq " + taskId;
Xrm.WebApi.retrieveMultipleRecords("new_new_lastask_systemuser", query).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
if (result.entities[i].systemuserid===oldUserId) {
// found the offering user, replace them
var data = {
"[email protected]": "/systemusers" + newUserId
}
// try to just change the value of the user attached to the N:N record
Xrm.WebApi.updateRecord(tableName, result.entities[i].new_new_lastask_systemuserid, data).then(
function success(result) {
console.log("Successfully updated");
// perform operations on record update
},
function (error) {
console.log(error.message);
// An error occurred while validating input parameters: Microsoft.OData.ODataException:
// An undeclared property 'systemuserid' which only has property annotations in the payload...
}
);
}
}
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
This is the same error I was getting when trying to update any lookup field on my entity when I was trying to use the name instead of the Schema Name, so I thought it might be related to the capitalisation of the field, so I have tried many variations (SystemUserId, User, SystemUser, systemuser, user, userid) and nothing works.
What should the Schema name be of the lookup field on my N:N table, or am I going about handling modifications to these the wrong way via this API?