Assuming you are using the Email connector module you have a Java action CreateEmailFromTemplate. You provide the data object and a template object. This Java action does the token replace part.
Something that I would check is to make sure you are passing the correct Data Object into the token replacer in your send email microflow. It must match the object you configured in your email template but it does not throw an error before compile/build because the token replacer expects a generic object so it won’t realize the wrong object is being passed in.
Hope this gets you pointed in the right direction