I have multiple domains on my Exchange 2010. I have moved one of my domains to O365 as a pilot before I move the rest. All is good, except, when users from any internal domains email the migrated domain, understandably, the emails go to the local exchange server. So 365 users can't see the incoming emails of course. Otherwise they can receive emails from another external domain. What is the best way to fix this issue with out removing those users from Exchange/ affecting the exchange mail flow.
The behaviour you are seeing is what I would expect. You need to eliminate all references to that domain from your Exchange to begin with - so that means removing the domain from accepted domains, email address policies and then from the user accounts.
However even then it will not stop the email from going to the internal accounts. That is because Exchange doesn't use the SMTP domain for routing - simply for lookup. It will do a lookup on the address, find it in the GAL and then send the email to the mailbox with the address attached. Of course users who have emailed the recipients before will still send to the mailbox, not the address, because Outlook and Exchange know that is where it exists.
Removing the entries from the nickname files is the only way to stop that (on top of above).
If the mailboxes still exist on your Exchange platform then the quick and dirty method is to configure a forward on each mailbox and then put in the onmicrosoft.com address that each use has.
Of course if you had done a hybrid implementation this wouldn't have been a problem - Exchange would know where to route the email.