haven't tried it yet but you can start with the following and think through:
- Add a field to Change: LockedBy (validated)
- Add a CalculationRule (with recalculate on load): LockedBy_Valid = $(nvl(LockedBy_Valid,CurrentUserRecId())
- Add an Validation rule: $(IsNull(LockedBy_Valid) || CurrentUserRecId() = LockedBy_Valid || CurrentUserLoginId() = "InternalServices")
Make sure that LockedBy will be set to null after saving the record.
You will still have to figure out what to do in case the person locking the record doesn't do anything.
- e.g. add a second field LockedDateTime and only lock the record for 5 minutes..