Hey Casey,
So I've "sort of" had a solution in place for a couple of months now.
Not sure if it'll fit for your situation, but sounds similar to mine.
There are two major issues I've identified.
1. A user can open multiple tabs, even multiple tabs of the same form for the exact same record.
2. Multiple users can open the same record form at the same time.
My solution kind of solves both, or at least, is a good enough hack to have significantly lowered the number of times errors happen because of these problems.
Here we go.
1. Have a memory file that has Entity Name and ID fields and a Session_ID var, as well as Username + Date/Time entered.
2. On any of the main pages (index, other major visited pages) clear the memory records for that Session.
2.a. I have a custom template attached to WebHandler that has a bunch of "procedure names" to check for, and clears on them.
2.b. Alternatively, you could _know_ the procedures that have the special logic (coming below) and anything other than them you could clear. The problem with this is that because one form could have a popup form with a child browse and another popup form etc etc.
3. For each form that I only ever want opened ONCE across any Session:
3.a. On loading of page, check if Entity Name (procedure name) and ID (if file loaded page, the id field) exist in the memory file.
3.a.1. If EXISTS, popup a little message saying "<Name> opened this page at <date/time>. Please get in touch with them etc etc." ALSO we make the form read-only (helps with general users). Also, have a custom session var here, to help with read-only any custom stuff I have in the form.
3.a.2. If NOT EXISTS, add into memory file.
3.a.2.i. On saving/cancelling of the form, the specific record added on load (because it didn't exist in the memory file) is removed from the memory file.
I think that's about it.
Has been in place for a few months, and it seems to be working okay.
Cheers,
Stu