@jamesdowns The clarification helps. There are probably several ways to go about this using the Parties component. I’m going to reference FIX Latest and if you’re implementing in FIX 4.4 you can always back-port the FIX Latest tags and enums to FIX 4.4.
As you know it all comes down to terminology and it seems you are providing some context in which the terms you’re using applies to, e.g. “omnibus held at the clearing FCM”. Then there is the perspective in which you’re writing your spec - who are the community of practice or user community involved. I’m going to have to make the assumption, based on your original post, that the spec is an exchange/clearinghouse spec in order to provide some context for my suggestions.
In the Parties component there are the following PartyRoles that could be considered:
83 = Clearing account
32 = Beneficiary
24 = Customer account
4 = Clearing firm
1 = Executing firm
There are also PartySubIDType values that could also be considered:
42 = Omnibus account
19 = Fund account name
22 = Securities account name
10 = Securities account number
If I were approaching this based on the limited information provided in the original post I’d probably do the following:
PartyRole=4 (clearing firm) and PartyID=
PartySubIDType=42 (Omnibus account), PartySubID=<the non-clearing FCM’s omnibus at the clearing FCM>
PartyRole=24 (customer account), PartyID=
The key for me was your comment “the customer account information of the non-clearing FCM is not disclosed to the Clearing FCM. The clearing FCM can know the individual account numbers but that is all.” which I interpret to mean that the custom account number is not an account at the clearing FCM per-se but provided to the clearing FCM by the non-clearing FCM as information only.
Then there is the question of whether there are more than on individual account numbers that would need to be included. Personally I do not see a reason to not send more than 1 instance of customer account role if the spec is clear on what this means.
That said, in the NewOrderSingle and ExecutionReport there is the PreAllocGrp. While you said the non-clearing FCM will do the allocation, it would be possible to simply use this component to just carry the individual customer accounts in the AllocAccount(79) field and nothing else (i.e. no allocated amounts). This would then remove the use of multiple instances of PartyRole=24.
The TCR is a bit more complicated as you have the TrdRptCapSideGrp as required and there are parties component both in the main level and side level. Is the implementation going to use a single-side or two-sided TCR? Is this sent by the exchange or clearinghouse? Who receives the TCR?
Another question for you, is the non-clearing FCM the executing broker?
Hope this helps somewhat.