Thanks for the help guys,
I dumped it when it wasnt reliable. I will ensure I post a great deal more information in the future. Essentially I have stopped using globals entirely. In order to update a static global or any iRule that uses RULE_INIT you need to restart bigip to trigger the event. This is far from ideal in a production multi-customer environment. In the end it was better to use local vars as they are global across your iRules, then use the session uie table to store persistent information. This way when I update an iRule variable I dont have to take down the box to do it and its all CMP friendly.
Regards
Jarvil