Eigentlich ist es doch ganz klar. Das ist dein ersten Beispiel:

25.10.2013 - 19:00:09.000 DEBUG AlarmPool - ### Neuer Eingegangener Alarm ###
25.10.2013 - 19:00:09.000 DEBUG AlarmPool - # Key: "message" with Value: "1111111Testsammelalarm"
...
25.10.2013 - 19:00:14.593 DEBUG AlarmPool - ### Neuer Eingegangener Alarm ###
25.10.2013 - 19:00:14.593 DEBUG AlarmPool - # Key: "message" with Value: "2222222Testsammelalarm"
...
>> Jetzt kommt der Sammelalarm
25.10.2013 - 19:00:39.015 DEBUG AlarmPool - ### Neuer Eingegangener Alarm ###
25.10.2013 - 19:00:39.015 DEBUG AlarmPool - # Key: "message" with Value: "2222222Testsammelalarm; 1111111Testsammelalarm"
Die eingehenden Texte sind doch alles andere als identisch: "1111111Testsammelalarm"<>"2222222Testsammelalarm" . Aus diesem Grund werden Sie im Sammelalarm beide hinzugefügt und es wird ein Text daraus: "2222222Testsammelalarm; 1111111Testsammelalarm"

Beispiel 2:
25.10.2013 - 19:06:13.125 DEBUG AlarmPool - ### Neuer Eingegangener Alarm ###
25.10.2013 - 19:06:13.125 DEBUG AlarmPool - # Key: "message" with Value: "Testsammelalarm"
...
25.10.2013 - 19:06:16.921 DEBUG AlarmPool - ### Neuer Eingegangener Alarm ###
25.10.2013 - 19:06:16.937 DEBUG AlarmPool - # Key: "message" with Value: "Testsammelalarm"
...
>> Jetzt kommt der Sammelalarm
25.10.2013 - 19:06:43.187 DEBUG AlarmPool - ### Neuer Eingegangener Alarm ###
25.10.2013 - 19:06:43.187 DEBUG AlarmPool - # Key: "message" with Value: "Testsammelalarm"
Hier sind beide Texte identisch. Deswegen wird dann zum Sammelalarm der Text nur einmal hinzugefügt.

Und ja:
Die globale Textersetzung findet erst nach (!) dieser ganzen Überprüfung statt.