I need help with finding my aggregate root and boundary.
I have 3 Entities: Plan, PlannedRole and PlannedTraining. Each Plan can include many PlannedRoles and Plann
Real problem here is SRP violation. Your input part of app goes in conflict with output.
Stick with first solution (Plan==aggregate root). Artificially promoting entities (or even value objects) to aggregate roots distorts whole domain model and ruins everything.
You might want to check out so called CQRS (command query responsibility segregation) architecture which would fit perfectly to fix this particular issue. Here's an example app by Mark Nijhof. Here's nice 'getting-started' list.