First, we went from INT/LONGINT identity to GUIDs/ uniqueidentifiers for the non-sharded primary key. The GUIDs are created in the application tier. Within the application tier itself, we pick the last nibble of the guid and decide the partitionId.
Now the PartitionId, CustId
is the Federation wide primary key and the application presents this to the database tier during any transaction. This has been tested to work.