My goal is to update the “QtyPer” value of the ECOMtl object for a part. I can successfully Check Out the part revision via API request…
https://epicor01.server.com/Pilot/api/v1/Erp.Bo.EngWorkBenchSvc/CheckOut
{
"ipGroupID": "BOMINTEGRATION",
"ipPartNum": "PART123",
"ipRevisionNum": "INITIAL",
"ipAsOfDate": "2025-07-30T00:00:00",
"ipAltMethod": "",
"ipProcessMfgID": "",
"ipCompleteTree": false,
"ipValidPassword": true,
"ipReturn": false,
"ipGetDatasetForTree": true,
"ipUseMethodForParts": false
}
Once checked out I can then add a new ECOMtl with the following request…
https://epicor01.server.com/Pilot/api/v1/Erp.Bo.EngWorkBenchSvc/Update
{
"ds": {
"ECOMtl": [
{
"Company": "200",
"PartNum": "PART123",
"RevisionNum": "INITIAL",
"MtlSeq": 10,
"MtlPartNum": "COMPONENT123",
"UOMCode": "LBS",
"QtyPer": 1.23,
"GroupID": "BOMINTEGRATION",
"RowMod": "A"
}
]
}
}
But when I make the following request…
https://epicor01.server.com/Pilot/api/v1/Erp.Bo.EngWorkBenchSvc/Update
{
"ds": {
"ECOMtl": [
{
"Company": "200",
"PartNum": "PART123",
"RevisionNum": "INITIAL",
"MtlSeq": 10,
"MtlPartNum": "COMPONENT123",
"QtyPer": 2.23,
<A BUNCH OF OTHER TAGS>
"RowMod": "U"
}
]
}
}
I get the following response…
{
"HttpStatus": 400,
"ReasonPhrase": "REST API Exception",
"ErrorMessage": "Row has been modified by another user and couldn't be updated.",
"ErrorType": "Ice.BLException",
"ErrorDetails": [
{
"Message": "Row has been modified by another user and couldn't be updated.",
"Type": "Error",
"Table": "ECOMtl",
"Field": "SysRevID",
"Program": "Epicor.Ice.dll",
"Method": "Validate",
"ColumnNumber": 9,
"LineNumber": 124,
"RowID": "140c0d9d-5a3e-45dc-a11e-2e86cb3df2e0"
}
],
"CorrelationId": "e0a70cd2-24fc-4b7b-9e78-4f3d8994e57b"
}
What am I missing?
I’m using the same authorization/user in each request.