I use Connect and Trainer Road. I sync my trainerroad activity to Connect, however, it does not replace data recorded by connect at that time. I've tried a three different things:
1. Record the activity with my wearable (Vivoactive3) and trainer road at the same time, then delete the activity recorded by my wearable. This fixes things like daily heart rate and intensity minutes, but I think it gives me credit for more calories than I actually burned (double counted based on my HR recorded by my wearable plus the calories from trainerroad).
2. Wear my wearable without starting an activity. This does not get me full credit for intensity minutes as the wrist based sensor tends to run low as my HR goes up and I'm sweaty. I use an HR strap when I exercise and use the wrist based HR for non-exercise periods.
3. Leave my wearable off and just use data from trainerroad. Even worse than option 2.
What I think would be a great feature is the option to have a third party app overwrite a specific time period. For example, if my trainerroad workout went from 4:44 am to 5:44 am, all data in connect would be overwritten by the trainerroad data for that time period, regardless of whether or not I used my other Garmin devices during that time. There would be a button on the exported/synced workout asking if you want to overwrite connect data, or maybe show two columns with competing data and which you want to keep from each source. Even better would be that, after completing this in the connect app, it would overwrite the data on any wearables or other Garmin devices you have, maybe assigning some unique number to the event so your devices wont try to replace it when they sync again later.
For now, #1, above, is about as best as I can get, just keeping in mind that I'm getting credit for more calories than I actually burned.