You can move burrowed units under buildings. Hence, you can use the amount of burrowed units under a building to represent the time left until it it turned into whatever you want. Note that if you intend on having lots of buildings built, I suggest you don't use exact timing, as it will require too many burrowed units. Instead, lower the accuracy by making one unit represent X seconds. This will make the highest possible mistake in the timing X. Hence you must adjust X to your needs.
When a bunker is created, move N burrowed zerglings owned by P7 (comp) to its position. Every X seconds scan through all P7 zerglings by copying the following trigger group as many times as many buildings you think might be 'waiting change' at the same time:
Trigger A:
Cond: P7 brings atleast 1 zergling to anywhere
Action: center location SCAN on zergling owned by P7 at anywhere
Action: remove 1 zergling at SCAN for P7
Action: give all zerglings owned by P7 at SCAN to P8 (another comp)
Action: preserve
Trigger B:
Cond: P7 brings exctly 1 zergling to SCAN
Action: replace buildings, remove zergling, preserve
After copying this trigger group many times, put the following trigger at the end:
Trigger C:
Condition: P7 brings exactly 0 zerglings to anywhere
COndition: P8 brings atleast 1 zergling to anywhere
Action: give all P8 zerglings to P7
Action: preserve
So your triggers should go like this: ABABABABABABABABA................ABABABAB
CMake sure that the burrowed unit you use is not used by P7 and P8 in any other way, or use smarter conditions/actions to eliminate any incompatibilities with other systems.
None.