I put DS in Gro Bedding, which zips the duvet to the bottom sheet on both sides, so it wasn't too much of a transition for him
After a few months I left the open cotbed side unzipped, and last week I put him under a regular duvet cover (which doesn't zip on) and he's been absolutely fine
I warned him that if he pulled the duvet too much it would come right off and he'd get cold, so he hasn't
So from sleeping bag to regular duvet has taken just over 6 months (DS doesn't do well with transitions). He's still in the cotbed as he still fits, but will be moving to a single later this year. He should be fine as it's less of a transition now that he's under a regular duvet. As with most things, slow small steps work best with DS!