How to configure session state changes notifications
The FIXEdge has the option to send an e-mail alerts once the FIX session changes its status.
In order to use such a functionality it is required to perform the following steps:
- configure the SMTP TA (transport adapter);
- create a business rule for notifications forwarding.
The SMTP TA is configured in the FixEdge.properties file.
The configuration section for the SMTP TA usually exists in the FixEdge.properties file by default – so it is required just to specify the correct ServerName, To and From properties:
... # SMTP server host. Required when DefaultServerName not defined TransportLayer.SmtpTA.SMTPSession.TestSMTPClient.ServerName = mail.test.com TransportLayer.SmtpTA.SMTPSession.TestSMTPClient.To = user@test.com; TransportLayer.SmtpTA.SMTPSession.TestSMTPClient.From = user@test.com; ...
Once the SMTP TA client is configured in the FixEdge.properties file, you could reference it in the BL_Configuration.xml config file.
Actually, once the session changes its state, a fake FIX message (35=C) is generated by the FIXEdge and routed to the Business Layer.
There are such entries in FIXEdge logs:
2015-03-26 15:18:12,413 UTC TRACE [BL_Layer] 140009470453504 Process incoming message. [8=FIX.4.4 9=189 35=C 49=fake 56=fake 34=1 52=99990909-17:17:17 164=7 94=0 42=20150326-15:17:09 147=[NOTE] FIXEDGE:ICEProxy Established 33=5 58=N 58=1 58=FIXEDGE:ICEProxy 58=Established 58=AttemptToConnect 10=238 ]
The tag 147 is automatically filled by the pattern: [<Category>] <SenderCompID:TargetCompID> <Actual Session state>.
So you should create a BL rule that will forward such notifications to the SMTP TA client.
The example of such a rule:
<!-- Send email on every session status change. Ignore Temp sessions.--> <Rule Description="Send emails with session state change notifications" > <Source> <!--Apply to each internal message --> <FixSession SenderCompID="fake" TargetCompID="fake" /> </Source> <Condition> <!--Apply to 35=C only --> <MsgType> <Val>C</Val> </MsgType> <!-- Apply to messages with 147 tag filled with session status --> <MatchField Field="147" Value=".*(AttemptToConnect|Established|Terminated correctly|Non-gracefully terminated)" /> </Condition> <Action> <!-- Forward the message to SmtpClient --> <Send> <Client Name="TestSMTPClient"/> </Send> </Action> </Rule>
This rule sends the notification to the SMTP TA client if any of configured FIX sessions changes its state.
If it is required to send notifications for the particular FIX session and/or the particular state you could modify the regexp: <MatchField Field="147" Value=… /> to achieve that.