Is there a way to link 02 set of FIX messages broken from a single complete FIX message ?

Hi
Lets say, we get the FIX messages from upstream system in the from of XML messages. But these messages are broken into 02 xml messages. All this msgs in xml format is stored in a table.
Now, we have 1000s of these everyday. How to link these pair of messages to each other to have a complete order message/xml ?
Example, the XMLs are loaded in table as :
Row#1
Fixtag8=FIX 4.2, Fixtag9=811,…other FIX tags…, Fixtag123456=C1=
Row#2
|116=Eclipse,…other FIX tags…Fixtag10=122
And similarly we have 1000s of rows of xml data in table. But we are not able to find how to link these pair of broken fix messages.
Is there a way to fix it ?

Let me know if I need to furnish more details

Tx

Not sure how to help here, looks like a proprietary XML format to me, i.e. FIX has an XML encoding called FIXML but that does not look like your example with tag numbers prefixed by the word “Fixtag”. Your upstream system does not seem to do you a favor by not using standard FIX encoding… :wink:

Seems like your tags are separated by comma, i.e. you can try to let Excel split them for every “,” contained in the row.

You talk about “pairs of messages”. Do you mean tag/value pairs, e.g. “8” and “FIX.4.2” or do you really mean two messages that belong together? If so, then further detail is needed to understand how messages are supposed to be paired.

Sorry for not being so elaborate.
An order life cycle will have set of events which will be communicated via FIX msgs.
Lets say, a complete order has 4 events (FIX messages). Ev1, Ev2,Ev3 and Ev4
Now we receive Ev1 not in a single xml but in 2 xml msgs with FIX tags in it (as shown in above description)
Similarly, we have for Ev2,Ev3,Ev4. Now in total we have 8 set of FIX msgs(xml), xml1, xml2, xml3,…, xml7, xml8.
How do we link or relate these xml / fix msgs to each other to make a complete Ev1 or Ev2 or Ev3 or Ev4.
I am not sure, if xml2 and xml6 might make up the Ev1, or so…Do we have some technical specifications of Fix Tags that might help me relate a broken fix msg.
I was thinking of Tag 10, Checksum. But not sure, how it works…I had read something long time ago… but not sure about it now.

Tx

Now I understand, you get a single logical FIX message broken into two physical messages, simply cutting the original message somewhere. No that is not supported by FIX and you need to talk to the provider of the upstream system. FIX messages are atomic in nature, i.e. every message must have a standard header and a checksum. You cannot have one without the checksum and the next without the standard header.

FIX does support fragmentation for very long messages but that requires to repeat a number of fields from the beginning of the message and those repeated fields allow you to put the logical message back together again.

Looking at your description of your data, one thing that might work is:

  • The examples gave FIX messages were which split into 2 records, the 1st part of the FIX message was in the 1st record and then the next part of the FIX message followed in the next record.
  • All FIX messages start with Tag 8 BeginString.
  • All FIX messages end with Tag 10 CheckSum.
  • When you have a record in your database that starts with BeginString(8) and does not end with CheckSum(10), you know you only have a partial message.
  • Get the next part of the FIX message from the next record in the database.
  • Do this until you find the last part that ends with CheckSum(10).
  • If you are expecting the next record in the database to be the next part of your message, and it’s starts with BeginString(8), you have an error.

Note this requires that you have a way of accessing the fragments of the FIX messages in the correct order.

Also, while you do have the CheckSum(10) field, it appears that you no longer have the original message, even after you assemble the fragments. So you can’t use that to validate your messages unless you do some extra work. Your data has commas separating fields. The SOH char is used as the field separator in the actual message. , != SOH The CheckSum(10) is calculated based on the actual chars in the FIX message. CheckSum is calculated byte in the FIX message up to but not including the CheckSum field and modulo 256 that value. See FIX Spec for details.