I'm a newb to Housebot but I learn fast!

My goal is to use the caller ID feature to track the last few phone calls and display them on a software remote. I did not want to use the HB logging feature as that actually writes the logged data to a file - this is not what I want - it is not displayable on a SW remote.
To that end, I am reusing the UserAlpha(1-9) properties by executing a script that would set each of them with a name, phone number, and date/time. So, when a call is received, a script device is invoked and executes a VB script that basically copies the 3 pieces of information (name, tele, date/time) into the UserAlpha(7,8,9) from UserAlpha(4,5,6). Then it copies UserAlpha(1,2,3) into UserAlpha(4,5,6). Finally it copies the current call information from the CallerID device into UserAlpha (1,2,3). Basically it's a list that is shifted every time an incoming call occurs (contents pushed downward for each call).
Couple of questions though:
1) Is this the best way to accomplish this? The way I saw it was I could use the predefined property so I could display the values of UserAlpha(1-9) in a SWremote. Each time the task is executed, the information is refreshed and the SW remote has the up-to-date caller ID information.
2) The script device is executed whenever CallerID_info_received = 'Yes'. The problem with that is the task keeps rexecuting as LONG as the caller_id_received = 'Yes' remains true. So, when an incoming call occurs, the condition to execute the task is true for a period of time and this causes multiple executions of the task. The end result is that desired list of calls is constantly being pushed down with the current call information (in other words, it executes repeatedly and destroys the concept of a log. However, if I execute the task MANUALLY (set task state to 'running') using the Housebot master interface, it works by pushing the caller ID information only once.
So, my big question for this post is how can I keep the task from executing repeatedly while caller_id_received = 'Yes' and destroying information? I thought about testing the value of caller_id_received = 'No' within the script and having it wait until that exit condition was satisified. Thus, the script basically waits until the caller information is complete and keeps it from running again.
However, I am not sure how to accomplish this in the VB script. Also, is this something that would lead to a deadlock (e.g. waiting forever for 'caller_id_received = 'No' never occurs)?
3) Can I create new arbitrary global property values? It seems to me that the existing global property values are hardcoded and are limited resources - e.g. use one up and it is not available for reuse?
Ok, I'd like an answer on #2 because that is what is killing my goal of having a caller ID log. Of course, I'm open to suggestions on a BETTER way of doing this... heh.