Is your script trapping for locked records? Use the Open Record step:
Set Error Capture [ on ]
Set Variable [ $error ; Get( LastError ) ]
Set Error Capture [ off ]
If [ $error = 0 ]
Set Field [ whatever ]
Go to Record [ next ; exit after last ]
Also make sure the account running the server script has enough privileges (or set the script to run with full access).
That was it! The record needed to be open. In the past I haven't needed to use that script step. Do you know generally when that step is required?
In a multi-user environment I use it every time a record is going to be edited, and plan what to do if the record is locked. The busier the database (more users) the more likely there will be locked records.
You need to work out what to do if records cannot be updated. Leave them with stale data? Go back and try again?
You could, for instance, omit all the records that are updated so the found set is left with the locked records, then wait and try again until the found set is empty. You need to face the possibility that there may be one or more records could be locked for an extended period of time (user left database open with an uncommitted record).