This is the most common error and also one of the most frustrating error when it comes to NetSuite. There are many things we need to check in order to resolve the record-change issue. I am listing some of those things that you need to check.
Check if any user event is calling a restlet - Check if restlet is loading and saving the same record that was executed with user event. In this case, Restlet load and save will trigger all the user events again, which may cause the issue.
Check if any work flow or scheduled script is triggered on the same record. Sometimes the record that you are going to edit may have been modified by some other scripts before you save, and in this case, you may get the record has been changed issue. In this case, you need to reload the record and save it.
Many times, records have been changed, and issues in user events and other scripts are caused by external applications like MuleSoft or Boomi. NetSuite takes a lot of time to save a transaction record if it is huge, and if, in between, that record was modified by these external applications, the user event script will throw a record has been changed error. To check these open web services logs and see when you are trying to save the user event record at the same time, is there any SOAP call? If yes, then ask Mule or the Boomi team to add a delay of 5 to 10 seconds to update that record after it is modified in NetSuite and a notification is sent to an external application.