James Henry has completed his move to Millwall from their Championship rivals Reading.
The two clubs reached an agreement on Monday and the formalities of the deal have now been pushed through.
The fee involved has not been disclosed, but the Royals have negotiated for a future sell-on clause to be included in the contract.
The 21-year-old midfielder now returns to The Den for a third time, having taken in loan spells with the Lions in each of the last two seasons.
He leaves the Madejski Stadium with Reading's best wishes, as they admit they cannot offer the youngster the first-team opportunities he craves at this stage of his career.
"First and foremost, we would like to wish James the very best for the future," director of football Nick Hammond told the Royals' official website.
"We have seen his development right through our academy, but the time has come where he simply needs to be playing regular first-team football.
"With the players we have here, we are not in a position to offer him the regular games he needs in order to get to the next stage of his development.
"Young players can come to this point in their careers and we have seen it with the likes of Simon Cox, they go on to other clubs and get the games they need, with a deal that also protects us as a club.
"James has grown both as a player and as a person during his time here at Reading, and he goes to a good club with our very best wishes."