Yea I use pessimistic buffering and set reprocess to 1
I put the data in the same table so I don't have to use to many tables over the network
I try and keep things simple or (encapsulation) the way I decipher it is, keep everything internal to itself where applicable
and as always you never ever have to listen to what I say
and your right I will never let foxpro take care of the record locking and I never ever use optimistic buffering, it seems so cheap
also I have been thinking of adding a timelocked field, my problem is getting the time from the server and not the local pc
so I can say
wait 'Record locked by '+gc_user+' for '+alltrim(str(timelocked - time() / 60))+ ' minutes.' window
but you sound like you have a very good grasp on the issues, I have faith that you will put together a well rounded robust solution.