We made tenantID as optional for recipientSyncData and donorStartMigration by declaring the default value for tenantID field as empty string with the fact that default values won't go into the tenantId validation check. But side-effect of declaring the tenantID with default on idl file is that donor creates recipientSyncData request BSON object with tenantID field set as empty string even if the tenantID in the recipientSyncData object instance is not set for shard merge protocol. This in-turn causes the recipient to fail the recipientSyncData cmd because the recipient now receives a recipientSyncData cmd with the tenantID as empty string. This causes the tenantID to go into tenantID validation check and causing it to fail with ErrorCodes:BadValue.
Cleaner fix is to set optional:true for tenantID in the tenant migration cmd idl files (here and here) and also remove the tenantID validator from the tenantMigrationRecipientDocument as for shard merge protocol after
SERVER-63454 the tenantID would be an empty string, just validating the tenantID at the command layer should be sufficient